Jellemzők és funkciók

Jellemzők és funkciók

Jellemzők és funkciók

Ez az oldal lefedi a Aspose.Imaging FOSS minden funkcióterületét a .NET formátumfelismeréshez és fejléc-ellenőrzés API számára, működő C# példákkal. A könyvtár soha nem dekódolja a képadatokat — minden metódus csak a fájlfejlécet olvassa.


Formátumfelismerés

ImageProbe a statikus belépési pont. Három túlterhelés fedi le a fájl útvonalát, egy adatfolyamot és egy nyers bájt tömböt:

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

Használd a DetectFormat csak akkor, ha csak a formátum alapján kell elágazni; használd a Probe/ProbeFile is, ha méretekre, bitmélységre vagy képkockaszámra is szükséged van.


Fejléc metaadatok olvasása

ProbeFile/Probe egy ImageInfo objektumot ad vissza nullable Width, Height, BitDepth és FrameCount értékekkel — mindegyik csak akkor töltődik fel, ha a felismert formátum fejléce valóban tartalmazza azt az értéket:

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

Format (egy ImageFormat enum érték) mindig be van állítva, amint a fejléc felismerték — ez az egyetlen mező, amely garantáltan ki lesz töltve.


Formátumonkénti megjegyzések

Néhány formátumnak vannak fejléckülönbségei, amelyeket a ImageInfo normalizál vagy közvetlenül feltár:

FormátumBehavior
GIFFrameCount tükrözi a képkockák számát, amikor a fájl több képkockát tartalmaz; ha a számot nem lehet meghatározni, kihagyja
BMPA fejlécekben lévő negatív magasság (felső-alsó sorrend) normalizálva van — Height a pozitív nagyságot adja vissza
DICOMA fejléc elemzése kezeli az Implicit VR Little Endian és az Explicit VR Little/Big Endian átvitel szintaxist, és kinyeri a sorok, oszlopok és a kiosztott bitek számát
// DICOM: rows -> Height, columns -> Width, bitsAllocated -> BitDepth,
// across any of the three common transfer syntaxes
var dicomInfo = ImageProbe.Probe(dicomBytes);
Console.WriteLine($"{dicomInfo.Width}x{dicomInfo.Height}, {dicomInfo.BitDepth}-bit");

Támogatott formátumok

Az összes 11 formátumot ugyanúgy észlelik — a ImageProbe azonosítja a formátumot és olvassa a fejlécre vonatkozó metaadatokat; soha nem dekódolja vagy kódolja újra a pixeladatokat egyiknél sem. A mezők kitöltése valóban formátumonként eltér, bár — minden formátum beállítja a Format értéket, de csak néhány tartalmaz bitmélységet vagy képkockaszámot a fejlécekben:

FormátumSzélesség / MagasságBitmélységKépkockaszám
PNG✓✓✓
JPEG✓✓—
GIF✓—✓
BMP✓✓—
WebP✓——
ICO✓✓✓
TIFF✓✓✓
PSD✓✓—
EMF✓ (a határolókból)——
WMF (helyezhető)✓ (96 DPI-t feltételez)——
DICOM✓ (Sorok/Oszlopok)✓ (BitsAllocated)—

Az ismeretlen fejlécre ImageFormat.Unknown kerül, ahelyett, hogy kivételt dobna. Néhány figyelemre méltó mezőkitöltési részlet: a PNG FrameCount értéke mindig 1 (egy állandó, nem valódi animált PNG képkocka-észlelés); az ICO FrameCount valódi számlálója a beágyazott ikonméreteknek a könyvtárban, és egy 0 dimenziós bájt egy ICO könyvtárbejegyzésben 256px-et jelent a formátumspecifikáció szerint; a TIFF FrameCount egy korlátozott bejárást tükröz a fájl IFD láncában (minden IFD egy oldal); a nem helyezhető WMF továbbra is helyesen azonosítható ImageFormat.Wmf értékkel, de csak Format értéket ad vissza — a méretek csak a helyezhető WMF esetén töltődnek ki, egy keménykódolt 96DPI átalakítással a fejléc inch-per-unit határaiból; az EMF-nek egyáltalán nincs explicit szélesség/magasság mezője, ezért a méretei a rclBounds eszköz-térbeli téglalapból származnak.


Tervezés szerint ellenálló

ImageProbe soha nem dob kivételt rosszul formázott vagy csonkolt bemenet esetén. Ahelyett, hogy kivételt emelne, egy részleges ImageInfo értéket ad vissza — a Format akkor van beállítva, amikor a fejléc formátumjelzője felismerték, még akkor is, ha a fájl további része rövidre lett vágva vagy sérült:

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

Ez biztonságossá teszi, hogy megbízhatatlan, részleges vagy folyamatban lévő letöltések ellen futtassuk anélkül, hogy minden hívás köré try/catch-et kellene tenni.


Tippek és bevált gyakorlatok

  • Használja a DetectFormat értéket a Probe helyett, ha csak a formátumra van szükség, nem a méretekre.
  • Ellenőrizze a Width/Height/BitDepth/FrameCount értékeket null esetén, mielőtt használná őket — nem minden formátumhoz vannak kitöltve.
  • Előnyben részesítse a Probe(stream) használatát a teljes fájl bájt tömbbe olvasása helyett nagy fájlok esetén.
  • A ImageProbe teljesen statikus — nincs példány, nincs IDisposable, nincs konfigurációs objektum.

Gyakori problémák

HibaOkJavítás
Format van ImageFormat.UnknownA fejléc nem egyezik a 11 felismert formátummalErősítse meg, hogy a fájl a PNG, JPEG, GIF, BMP, WebP, ICO, TIFF, PSD, EMF, WMF vagy DICOM formátumok egyike
Width/Height nullA formátum fejlécében nem szerepel ez a mező, vagy a fejlécet levágták még ezelőttEllenőrizze először a(z) Format értéket; nem minden mező van kitöltve minden formátumnál
A BMP magasság váratlanul pozitívnak tűnikA forrásfájl negatív (fentről lefelé) magasságot használt a fejlécbenElvárt — ImageInfo.Height mindig a pozitív nagyságra normalizálódik

FAQ

A ImageProbe dekódolja a képpont adatokat?

Nem. Minden metódus csak a fájlfejlécet olvassa — a méreteket, a bitmélységet és a képkockák számát — soha nem a képpont tartalmat. A dekódolás és a renderelés e könyvtár hatáskörén kívül esik.

Mi történik, ha egy sérült vagy csonkolt fájlt vizsgálok?

ImageProbe soha nem dob hibát rosszul formázott vagy csonkolt bemenet esetén. Egy ImageInfo objektumot ad vissza a rendelkezésre álló fejlécbájtokból meghatározható mezőkkel — a Format akkor van beállítva, amikor a formátumjelzőt magát is felismerték.

Vizsgálhatok olyan adatfolyamot, amely nem kereshető?

Igen. A Probe(stream) elfogadja mind a kereshető, mind a nem kereshető adatfolyamokat.


API Reference Összegzés

Osztály / MetódusLeírás
ImageProbe.ProbeFile(path)Vizsgáld meg egy fájlt útvonal alapján, és egy ImageInfo-t ad vissza
ImageProbe.Probe(stream)Vizsgáld meg egy Stream-t (kereshető vagy nem)
ImageProbe.Probe(data)Vizsgáld meg egy nyers byte[]-t
ImageProbe.DetectFormat(stream)Csak a ImageFormat legyen visszaadva egy adatfolyam esetén
ImageProbe.DetectFormat(data)Csak a ImageFormat térjen vissza egy byte[] esetén
ImageInfoEredmény típusa: Format, Width, Height, BitDepth, FrameCount
ImageFormatEnumeráció: Unknown, Png, Jpeg, Gif, Bmp, WebP, Ico, Tiff, Psd, Emf, Wmf, Dicom

Lásd még:

 Magyar