Mag API
Alap API
Aspose.Imaging FOSS a .NET teljes nyilvános felületéhez három osztályból áll: ImageProbe (a statikus felület), ImageInfo (az eredményérték), és ImageFormat (a formátum enum). Ez az oldal bemutatja, hogyan illeszkednek össze szerződésként, túl a funkciónkénti bemutatón a Jellemzők és funkciók.
A háromosztályos szerződés
ImageProbe— statikus, állapot nélküli. Minden hívás független; nincs semmi konfigurálandó vagy felszabadítandó.ImageInfo— lezárt, immutábilis. Az összes öt tulajdonság (Format,Width,Height,BitDepth,FrameCount) csak olvasható a létrehozás után.ImageFormat— egy enum egy értékkel minden felismert formátumhoz, pluszUnknown.
using Aspose.Imaging.Foss;
var info = ImageProbe.ProbeFile("photo.jpg");
ImageFormat format = info.Format; // always set
int? width = info.Width; // set only when the format's header carries itA ImageInfo közvetlen létrehozása
ImageInfo konstruktorja publikus — csak a format kötelező, minden más paraméter alapértelmezés szerint null. Ez hasznos egységtesztekhez, amelyeknek egy helyettesítő eredményre van szükségük anélkül, hogy valódi fájlt vizsgálnának:
using Aspose.Imaging.Foss;
// Fake a PNG result for a test double, with no dimensions
var fakeInfo = new ImageInfo(ImageFormat.Png);
// Fake a fully-populated result
var fullInfo = new ImageInfo(ImageFormat.Gif, width: 64, height: 48, bitDepth: 8, frameCount: 3);Nincs megfelelő módja annak, hogy mutate an ImageInfo a konstrukció után — minden tulajdonság csak olvasható, így egy lekérdezett vagy létrehozott példány biztonságosan továbbadható és gyorsítótárazható védelmi másolás nélkül.
A megfelelő overload kiválasztása
| Overload | Használja, ha |
|---|---|
ImageProbe.ProbeFile(path) | Van egy fájl útvonala, és a teljes ImageInfo-t szeretné |
ImageProbe.Probe(stream) | Már van egy nyitott Stream (kereshető vagy nem), és a teljes ImageInfo-t szeretné |
ImageProbe.Probe(data) | Már a memóriában vannak a bájtok, és a teljes ImageInfo szeretnéd. |
ImageProbe.DetectFormat(stream) / (data) | Csak a ImageFormat alapján kell elágazni — hagyd ki a fejléc elemzését a formátum aláírásán túl. |
ProbeFile maga nyitja meg és olvassa a fájlt — nincs szükség előbb egy FileStream megnyitására csak azért, hogy Probe(stream)-t meghívjunk.
Könyvtár kötegelt vizsgálata
Mivel a ImageProbe soha nem dob kivételt, egy könyvtár beolvasás szorosan ciklusban hívhatja meg anélkül, hogy fájlonként try/catch-et kellene használni:
using Aspose.Imaging.Foss;
foreach (var path in Directory.GetFiles("incoming"))
{
var info = ImageProbe.ProbeFile(path);
if (info.Format == ImageFormat.Unknown)
{
Console.WriteLine($"{path}: not a recognized image format, skipping");
continue;
}
Console.WriteLine($"{path}: {info.Format} {info.Width}x{info.Height}");
}Bármely fájl, amelynek fejléce nem egyezik a 11 felismert formátum egyikével, a ImageFormat.Unknown-ra kerül, ahelyett, hogy kivételt dobna — a fenti ciklusnak soha nincs szüksége catch blokkra.
A “soha nem dob” szerződés
Ez nem véletlen viselkedés — szándékos része a API szerződésnek. Ha egy felismert formátum fejléce a feldolgozás közben csonkolt vagy hibás, a ImageProbe továbbra is egy ImageInfo-t ad vissza, amelynek Format értéke a felismert formátumra van állítva; nem továbbít parse kivételt a hívónak. Csak a Format garantált — minden egyéb tulajdonságot opcionálisnak kell tekinteni, függetlenül attól, hogy melyik formátumot észlelték.
Gyakori problémák
| Probléma | Oka | Javítás |
|---|---|---|
A létrehozott ImageInfo nem egyezik egy valós probe eredménnyel. | A kézzel létrehozott példányok nem ellenőrzik a mezők közötti konzisztenciát | A kézi konstrukciót csak tesztduplikátumokhoz használd, ne helyettesítőként a valós fájlok vizsgálatához |
A Probe hívása, amikor a DetectFormat is elegendő | Fölösleges fejléc-elemzés, ha csak a formátumra van szükség | Használd a DetectFormat, ha soha nem olvasod a Width/Height/BitDepth/FrameCount |
A Unknown formátum egy olyan fájlhoz, amelyet támogatottnak vársz | A fejléc nem egyezik a 11 felismert aláírás egyikével sem, vagy a fájl teljesen más formátumú | Erősítsd meg a fájlt a támogatott formátumok listája |
FAQ
Leszármazhatok a ImageInfo vagy a ImageProbe osztályból?
Nem. A ImageInfo sealed, a ImageProbe pedig static — egyik sem lett tervezve leszármaztatásra vagy öröklésen keresztüli példányosításra.
Szálbiztos a ImageProbe?
ImageProbe nem tart fenn módosítható állapotot a hívások között — minden hívás a Probe, a ProbeFile vagy a DetectFormat felé független, ami a több szálból történő egyidejű hívásokat biztonságossá teszi.
Kell-e valamit felszabadítanom?
Nem. A ImageProbe nem rendelkezik saját IDisposable erőforrással. Ha saját magad által megnyitott Stream-t adsz át, akkor továbbra is te vagy felelős annak felszabadításáért — a Probe(stream) nem zárja be azt.
API Reference összefoglaló
| Osztály / Metódus | Leírás |
|---|---|
ImageProbe.ProbeFile(path) | Vizsgáld meg a fájlt útvonal alapján |
ImageProbe.Probe(stream) | Vizsgáld meg a Stream |
ImageProbe.Probe(data) | Vizsgáld meg a byte[] |
ImageProbe.DetectFormat(stream) | Csak formátum, egy Stream alapján |
ImageProbe.DetectFormat(data) | Csak formátum, egy byte[] alapján |
ImageInfo(format, width, height, bitDepth, frameCount) | Nyilvános konstruktor — csak a format kötelező |
ImageInfo.Format / .Width / .Height / .BitDepth / .FrameCount | Csak olvasható eredmény tulajdonságok |
ImageFormat | Enum: Unknown, Png, Jpeg, Gif, Bmp, WebP, Ico, Tiff, Psd, Emf, Wmf, Dicom |