Hoe te Werken met de Aspose.Imaging FOSS Core API in .NET

Hoe te Werken met de Aspose.Imaging FOSS Core API in .NET

Aspose.Imaging FOSS voor de publieke laag van .NET bestaat uit drie klassen: ImageProbe, ImageInfo en ImageFormat. Deze gids leidt je door het installeren van het pakket en het gelijktijdig gebruiken van alle drie om een formaat te detecteren en header-metadata te lezen uit een bestand, een stream en een byte-array.

Stapsgewijze gids

Stap 1: Installeer het pakket

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

Het pakket richt zich op net8.0 en netstandard2.0 en heeft geen externe runtime-afhankelijkheden.


Stap 2: Importeer de namespace

Voeg een enkele using directive toe — het maakt ImageProbe, ImageInfo en ImageFormat bloot, het volledige API oppervlak, zodat er niets anders geïmporteerd hoeft te worden:

using Aspose.Imaging.Foss;

Stap 3: Een bestand via pad onderzoeken

ImageProbe.ProbeFile leest net genoeg van de bestandsheader om een ImageInfo resultaat te vullen — het decodeert nooit pixelgegevens:

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

Stap 4: Een stream of byte-array onderzoeken

Wanneer de afbeelding al in het geheugen staat of afkomstig is van een stream (een upload, een netwerkrespons), gebruik dan de overloads die deze direct accepteren in plaats van eerst naar een tijdelijk bestand te schrijven:

byte[] bytes = File.ReadAllBytes("photo.jpg");
var infoFromBytes = ImageProbe.Probe(bytes);

using var stream = File.OpenRead("photo.jpg");
var infoFromStream = ImageProbe.Probe(stream);

Probe(stream) werkt met zowel seek-bare als niet-seek-bare streams.


Stap 5: Gebruik DetectFormat wanneer je alleen het formaat nodig hebt

Als je alleen op basis van het formaat wilt vertakken en geen afmetingen, kleurdiepte of frame-aantal nodig hebt, DetectFormat slaat de rest van de header-analyse over:

var format = ImageProbe.DetectFormat(bytes);
if (format == ImageFormat.Dicom)
{
    // route to DICOM-specific handling
}

Stap 6: Lees de nullable ImageInfo-velden veilig

Width, Height, BitDepth en FrameCount zijn nullable — ze worden alleen gevuld wanneer de header van het gedetecteerde formaat die waarde daadwerkelijk bevat. Format is het enige veld dat altijd wordt ingesteld zodra de header is herkend:

var info = ImageProbe.ProbeFile("scan.dcm");
if (info.Width.HasValue && info.Height.HasValue)
{
    Console.WriteLine($"{info.Format}: {info.Width}x{info.Height}");
}
else
{
    Console.WriteLine($"{info.Format}: dimensions not available in this header");
}

Veelvoorkomende problemen en oplossingen

Formaat wordt weergegeven als ImageFormat.Unknown. De header van het bestand komt niet overeen met een van de 11 herkende formaten (PNG, JPEG, GIF, BMP, WebP, ICO, TIFF, PSD, EMF, WMF, DICOM). Controleer of het bestand echt een van die formaten is — ImageProbe gooit nooit een fout bij een niet-herkende header, het rapporteert Unknown in plaats daarvan.

Width/Height are null zelfs al Format is ingesteld. Niet elke header van een formaat bevat elk veld, en een afgekapt bestand kan stoppen voordat de bytes van een veld zijn bereikt. Controleer Format eerst, daarna behandel de rest als optioneel.

Calling Probe when DetectFormat zou doen. Probe and ProbeFile parseer de volledige header; DetectFormat leest alleen genoeg om het formaat te identificeren. Gebruik DetectFormat als je nooit leest Width/Height/BitDepth/FrameCount.

Verwacht gedecodeerde pixelgegevens. ImageProbe decodeert, rendert of converteert nooit afbeeldingsinhoud — het leest alleen headermetadata. Decodering en pixel-niveau bewerkingen vereisen de commerciële Aspose.Imaging SDK.

Veelgestelde vragen

Wat gebeurt er als ik een ingekort of beschadigd bestand probeer?

ImageProbe gooit nooit een uitzondering bij misvormde of ingekorte invoer. Het retourneert een gedeeltelijke ImageInfo — Format wordt ingesteld telkens wanneer de formatmarker van de header werd herkend, zelfs als de rest van het bestand te kort is.

Is ImageProbe thread-veilig?

Ja. ImageProbe is statisch en bevat geen veranderlijke staat tussen aanroepen, dus gelijktijdige aanroepen vanuit meerdere threads zijn veilig.

Kan ik een ImageInfo direct construeren, zonder een echt bestand te onderzoeken?

Ja. De constructor van ImageInfo is public en vereist alleen format — handig voor het bouwen van test doubles: new ImageInfo(ImageFormat.Png, width: 64, height: 48).

Moet ik iets vrijgeven?

Nee. ImageProbe bevat geen eigen IDisposable resources. Als je een Stream doorgeeft die je zelf hebt geopend, blijf je verantwoordelijk voor het vrijgeven ervan.

Zie ook

 Nederlands