Einleitung

Aspose.Imaging FOSS für .NET ist eine kostenlose, MIT-lizenzierte, Open-Source-Bibliothek für .NET-Entwickler, die wissen müssen, was eine Bilddatei is — ihr Format, ihre Abmessungen, Farbtiefe und Bildanzahl — ohne die Kosten für das Dekodieren zu tragen. Die statische ImageProbe Klasse ist der Einstiegspunkt: ProbeFile(path) liest von der Festplatte, Probe(stream) and Probe(data) akzeptiert einen Stream oder ein Byte-Array und DetectFormat(stream) / DetectFormat(data) gibt das ImageFormat Enum-Wert zurück, ohne ein vollständiges ImageInfo, für Aufrufer, die nur nach dem Format verzweigen müssen. Jede Probe-Methode gibt ein ImageInfo Objekt mit nullable Width, Height, BitDepth, und FrameCount Eigenschaften, die nur befüllt werden, wenn der Header des erkannten Formats diesen Wert tatsächlich enthält.

Dies ist ein bewusst eng gefasstes Werkzeug, und genau das ist der Sinn. Es dekodiert keine Pixel, rendert keine Bilder und konvertiert nicht zwischen Formaten — dafür ist das kommerzielle Aspose.Imaging-Produkt für .NET die richtige Wahl (unten verlinkt unter Open Source & Lizenzierung). Was Aspose.Imaging FOSS für .NET leistet, ist die wesentlich kleinere, weitaus häufigere Aufgabe, die Frage zu beantworten „Welches Format hat das und wie groß ist es?“, so schnell und sicher wie möglich, für Problemklassen, bei denen eine vollständige Dekodierung unnötige Arbeit wäre: Validierung eines Uploads, Bestimmung der Größe eines Thumbnail-Layouts, Durchsicht einer Charge gemischter Dateien oder das Auslesen von DICOM-Header-Feldern für eine Vorverarbeitungsprüfung.

Die Bibliothek ist MIT-lizenziert, hat keinerlei externe Abhängigkeiten und richtet sich sowohl an netstandard2.0 als auch an net8.0 — kostenlos für Open-Source- und kommerzielle Nutzung, ohne Lizenzgebühren oder Weiterverbreitungsbeschränkungen.


Hauptfunktionen

Drei Möglichkeiten, eine Datei zu prüfen

ImageProbe bietet Einstiegspunkte für Dateipfade, Streams und Byte-Arrays, sodass es überall dort passt, wo die Bilddaten bereits in Ihrer Pipeline vorhanden sind — auf der Festplatte, bereits im Speicher oder über das Netzwerk ankommend. DetectFormat überspringt das Erstellen eines vollständigen ImageInfo, wenn Sie nur nach dem Format verzweigen müssen.

using Aspose.Imaging.Foss;

var fromPath   = ImageProbe.ProbeFile("photo.jpg");
var fromBytes  = ImageProbe.Probe(byteArray);
var fromStream = ImageProbe.Probe(stream);

var formatOnly = ImageProbe.DetectFormat(byteArray); // ImageFormat only, no header parse

Strukturierte, ehrliche Ergebnisse

ImageInfo stellt Format bereit (ein ImageFormat Enum-Wert, immer gesetzt, sobald der Header erkannt wird) zusammen mit nullable Width, Height, BitDepth und FrameCount. „Nullable“ leistet hier echte Arbeit: Die Feldbefüllung variiert tatsächlich je nach Format, und ImageInfo erzeugt niemals einen Wert, den der Header eines Formats nicht enthält. Das Prüfen auf null vor der Verwendung ist das korrekte Muster, nicht ein nachträglicher defensiver Gedanke.

var info = ImageProbe.ProbeFile("scan.dcm");
if (info.Width.HasValue && info.Height.HasValue)
{
    Console.WriteLine($"{info.Format}: {info.Width}x{info.Height}");
}

11 Formate, darunter drei, die sonst nichts anderes im FOSS .NET Space erkennen.

PNG, JPEG, GIF, BMP, WebP (verlustbehaftet, verlustfrei und erweitert), ICO, TIFF, PSD, EMF, WMF und DICOM. Die Befüllung der Felder unterscheidet sich je nach Format bewusst, nicht durch Auslassung — PNG enthält Breite, Höhe, Farbtiefe, and Bildanzahl (obwohl FrameCount ist ein fest codierter 1, keine echte animierte PNG-Bilderkennung); FrameCount ist eine echte Anzahl der im Verzeichnis eingebetteten Icon-Größen und ein 0 Byte im Dimensionsfeld eines ICO-Verzeichniseintrags bedeutet 256px, laut der Formatspezifikation; TIFFs FrameCount spiegelt einen begrenzten Durchlauf der IFD-Kette der Datei wider, ein IFD pro Seite.

Drei dieser elf — PSD, EMF/WMF und DICOM — haben keinen anderen freien, Open-Source .NET Detektor, von dem wir wissen, was ein echter Grund dafür ist, warum diese Bibliothek existiert.

WMF und EMF: Zwei Legacy-Formate, zwei unterschiedliche Grenzen

Nicht-platzierbares WMF wird weiterhin korrekt als ImageFormat.Wmf identifiziert, aber nur platzierbares WMF füllt Dimensionen — abgeleitet von den Einheiten-pro-Zoll-Grenzwerten des Headers über eine hartkodierte 96-DPI-Umrechnung, da WMF selbst keine absolute Pixelgröße enthält. EMF hat überhaupt kein explizites Breite/Höhe-Feld; seine Dimensionen stammen stattdessen aus dem rclBounds Geräte-Raum-Rechteck im EMF-Header. Beide werden ehrlich in ImageInfo wiedergegeben: Wenn ein Wert nicht abgeleitet werden kann, bleibt die Eigenschaft null statt zu raten.

DICOM-Header-Parsing ohne Viewer

ImageProbe liest DICOM-Header über die Implizite-VR-Little-Endian- und Explizite-VR-Little/Big-Endian-Transfer-Syntaxen und extrahiert Rows in Height, Columns in Width und BitsAllocated in BitDepth – kein DICOM-Viewer oder externe Bildverarbeitungsabhängigkeit erforderlich. Das Parsen ist per Design konservativ: ein Sequenzelement ohne definierte Länge beendet das Durchlaufen, anstatt dessen Inhalt zu raten, sodass eine teilweise verstandene DICOM-Datei zu einem teilweisen ImageInfo degradiert wird, anstatt zu einem falschen.

Wirft nie bei fehlerhaften oder gekürzten Eingaben

Probe ist für nicht vertrauenswürdige, teilweise oder im Flug befindliche Dateien konzipiert. Wenn eine Datei der Signatur eines Formats entspricht, deren Header jedoch nicht vollständig geparst werden kann – ein gekürzter Download, ein beschädigter Upload – enthält das Ergebnis nur das erkannte Format statt einer Ausnahme.

byte[] truncated = fullFileBytes[..^3];
var info = ImageProbe.Probe(truncated);
// info.Format is still populated; other fields may be null

Schnellstart

Installieren Sie das Paket und prüfen Sie dann eine Datei von der Festplatte, um ihr erkanntes Format, ihre Abmessungen, Bittiefe und Bildanzahl in einem Aufruf zu lesen, gefolgt von einer reinen Formatprüfung anhand der Rohbytes:

git clone https://github.com/aspose-imaging-foss/Aspose.Imaging-FOSS-for-.NET.git
cd Aspose.Imaging-FOSS-for-.NET
dotnet build
using Aspose.Imaging.Foss;

var info = ImageProbe.ProbeFile("photo.jpg");
Console.WriteLine($"{info.Format}: {info.Width}x{info.Height}, {info.BitDepth}-bit, " +
                   $"{info.FrameCount ?? 0} frame(s)");

// Format-only detection when dimensions aren't needed
var bytes = File.ReadAllBytes("photo.jpg");
var format = ImageProbe.DetectFormat(bytes);

Unterstützte Formate

Aspose.Imaging FOSS für .NET detects alle 11 unten aufgeführten Formate und liest Metadaten auf Header-Ebene — es dekodiert keine Pixeldaten, daher gibt es keine “write”-Fähigkeit zu melden. Die Feldbefüllung variiert je nach Format; siehe die detaillierte Aufschlüsselung in den oben genannten Hauptfunktionen.

FormatErweiterungDetectedBreite / HöheBit-TiefeBildanzahl
PNG.png✓✓✓✓
JPEG.jpg / .jpeg✓✓✓—
GIF.gif✓✓—✓
BMP.bmp✓✓✓—
WebP.webp✓✓——
ICO.ico✓✓✓✓
TIFF.tif / .tiff✓✓✓✓
PSD.psd✓✓✓—
EMF.emf✓✓ (aus Grenzen)——
WMF.wmf✓✓ (nur platzierbar, 96 DPI)——
DICOM.dcm✓✓ (Zeilen/Spalten)✓ (BitsAllocated)—

Open Source & Lizenzierung

Aspose.Imaging FOSS für .NET ist MIT-lizenziert mit null externen Abhängigkeiten. Die MIT-Lizenz erlaubt die Nutzung sowohl in Open-Source- als auch in kommerziellen Projekten ohne Lizenzgebühren oder Einschränkungen bei der Weiterverteilung. Der Quellcode ist verfügbar unter GitHub. Er ist bewusst nur auf die Format-Erkennung beschränkt — für das Dekodieren, Bearbeiten oder Konvertieren dieser Bildformate siehe Aspose.Imaging für .NET — Enterprise Product.


Erste Schritte

Verwandte Ressourcen