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, plusz Unknown.
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 it

A 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

OverloadHaszná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émaOkaJaví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átA 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égHasználd a DetectFormat, ha soha nem olvasod a Width/Height/BitDepth/FrameCount
A Unknown formátum egy olyan fájlhoz, amelyet támogatottnak várszA 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ódusLeí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 / .FrameCountCsak olvasható eredmény tulajdonságok
ImageFormatEnum: Unknown, Png, Jpeg, Gif, Bmp, WebP, Ico, Tiff, Psd, Emf, Wmf, Dicom

Lásd még:

 Magyar