Introductie

Aspose.Imaging FOSS voor .NET is een gratis, MIT-gelicentieerde, open-source bibliotheek voor .NET ontwikkelaars die moeten weten wat een afbeeldingbestand is — zijn formaat, afmetingen, kleurdiepte en aantal frames — zonder de kosten van het decoderen ervan te betalen. De statische ImageProbe klasse is het toegangspunt: ProbeFile(path) leest van schijf, Probe(stream) and Probe(data) accepteert een stream of byte-array, en DetectFormat(stream) / DetectFormat(data) geeft de ImageFormat enum-waarde terug zonder een volledige ImageInfo, voor aanroepers die alleen op formaat hoeven te vertakken. Elke probe-methode retourneert een ImageInfo object met nullable Width, Height, BitDepth, en FrameCount eigenschappen, alleen gevuld wanneer de gedetecteerde formaatheader die waarde daadwerkelijk bevat.

Dit is een opzettelijk smal hulpmiddel, en dat is de bedoeling. Het decodeert geen pixels, rendert geen afbeeldingen, en converteert niet tussen formaten – daarvoor is het commerciële Aspose.Imaging voor .NET product de juiste keuze (onderstaand gelinkt onder Open Source & Licenties). Wat Aspose.Imaging FOSS voor .NET doet, is de veel kleinere, veel meer voorkomende taak om te beantwoorden “welk formaat is dit, en hoe groot is het?” zo snel en zo veilig mogelijk, voor het type probleem waarbij volledige decodering verspilde moeite zou zijn: een upload valideren, een miniatuurindeling dimensioneren, een batch gemengde bestanden triage uitvoeren, of DICOM-headervelden lezen voor een pre-processing controle.

De bibliotheek is MIT-gelicentieerd met nul externe afhankelijkheden en richt zich op zowel netstandard2.0 als net8.0 – gratis voor zowel open-source als commercieel gebruik, zonder royalty’s of beperkingen op herdistributie.


Belangrijkste kenmerken

Drie manieren om een bestand te onderzoeken

ImageProbe biedt bestands-pad, stream- en byte-array toegangspunten, zodat het past waar de beeldgegevens al in uw pipeline aanwezig zijn – op schijf, al in het geheugen, of aankomend via het netwerk. DetectFormat slaat het bouwen van een volledige ImageInfo over wanneer u alleen op formaat hoeft te vertakken.

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

Gestructureerde, Eerlijke Resultaten

ImageInfo onthult Format (een ImageFormat enum-waarde, altijd ingesteld zodra de header is herkend) naast nullable Width, Height, BitDepth en FrameCount. “Nullable” doet hier echt werk: de veldpopulatie varieert daadwerkelijk per formaat, en ImageInfo fabriceert nooit een waarde die de header van een formaat niet bevat. Controleren op null vóór gebruik is het juiste patroon, niet een defensieve bedachtkoming.

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

11 Formaten, Inclusief Drie Niets Anders in de FOSS .NET Ruimte Detecteert

PNG, JPEG, GIF, BMP, WebP (lossy, lossless, en uitgebreid), ICO, TIFF, PSD, EMF, WMF, en DICOM. Veldpopulatie verschilt per formaat opzettelijk, niet door weglating — PNG bevat breedte, hoogte, bitdiepte, and frame-aantal (hoewel FrameCount is een hardcoded 1, geen echte animated-PNG frame-detectie); FrameCount is een echte telling van de ingebedde pictogramgroottes in zijn map, en een 0 byte in een ICO directory-vermelding’s dimensieveld betekent 256px, volgens de format-spec; TIFF’s FrameCount geeft een begrensde doorloop van de IFD-keten van het bestand weer, één IFD per pagina.

Drie van deze elf — PSD, EMF/WMF en DICOM — hebben geen andere gratis, open-source .NET detector waarvan we weten, wat een echte reden is waarom deze bibliotheek bestaat.

WMF en EMF: Twee Legacy-formaten, Twee Verschillende Limieten

Niet-plaatsbare WMF wordt nog steeds correct geïdentificeerd als ImageFormat.Wmf, maar alleen plaatsbare WMF vult afmetingen in — afgeleid van de eenheden-per-inch-grenzen in de header via een hardcoded 96DPI-conversie, aangezien WMF zelf geen absolute pixelformaat bevat. EMF heeft helemaal geen expliciet breedte-/hoogte-veld; de afmetingen komen in plaats daarvan uit de rclBounds apparaat-ruimte rechthoek in de EMF-header. Beide worden eerlijk weerspiegeld in ImageInfo: wanneer een waarde niet kan worden afgeleid, blijft de eigenschap null in plaats van te raden.

DICOM Header Parsing Zonder Viewer

ImageProbe leest DICOM-koppen over Implicit VR Little Endian en Explicit VR Little/Big Endian overdrachtsyntaxen, en extraheert Rows naar Height, Columns naar Width, en BitsAllocated naar BitDepth — zonder dat een DICOM-viewer of externe beeldafhankelijkheid nodig is. Het parsen is bij uitstek conservatief: een element met ongedefinieerde lengte stopt de doorloop in plaats van te gokken over de inhoud, zodat een gedeeltelijk begrepen DICOM-bestand degradeert tot een gedeeltelijke ImageInfo in plaats van een verkeerde.

Gooit nooit een uitzondering bij misvormde of afgekorte invoer

Probe is gebouwd voor onbetrouwbare, gedeeltelijke of onderweg-zijnde bestanden. Als een bestand overeenkomt met de handtekening van een formaat maar de header niet volledig kan worden geparseerd — een afgekorte download, een beschadigde upload — bevat het resultaat alleen de gedetecteerde Format in plaats van een uitzondering.

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

Snelstart

Installeer het pakket en onderzoek vervolgens een bestand vanaf schijf om in één oproep het gedetecteerde formaat, de afmetingen, de bitsdiepte en het aantal frames uit te lezen, gevolgd door een controle alleen op formaat met de ruwe bytes:

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);

Ondersteunde formaten

Aspose.Imaging FOSS voor .NET detects alle 11 onderstaande formaten en leest metadata op header-niveau — het decodeert geen pixeldata, dus er is geen “write”-mogelijkheid om te rapporteren. Veldvulling varieert per formaat; zie de gedetailleerde uitsplitsing in Belangrijkste kenmerken hierboven.

FormaatExtensieDetectedBreedte / HoogteBitdiepteAantal frames
PNG.png✓✓✓✓
JPEG.jpg / .jpeg✓✓✓—
GIF.gif✓✓—✓
BMP.bmp✓✓✓—
WebP.webp✓✓——
ICO.ico✓✓✓✓
TIFF.tif / .tiff✓✓✓✓
PSD.psd✓✓✓—
EMF.emf✓✓ (van grenzen)——
WMF.wmf✓✓ (alleen plaatsbaar, 96 DPI)——
DICOM.dcm✓✓ (Rijen/Kolommen)✓ (BitsAllocated)—

Open Source & Licenties

Aspose.Imaging FOSS voor .NET is gelicenseerd onder de MIT-licentie zonder externe afhankelijkheden. De MIT-licentie staat gebruik toe in zowel open-source als commerciële projecten, zonder royalty’s of beperkingen op herdistributie. De broncode is beschikbaar op GitHub. Het is opzettelijk beperkt tot alleen formatdetectie — voor decoderen, bewerken of converteren van deze beeldformaten, zie Aspose.Imaging voor .NET — Enterprise Product.


Aan de slag

Gerelateerde bronnen