Nucleu API

API de bază

Aspose.Imaging FOSS pentru suprafața publică completă a .NET este trei clase: ImageProbe (fațada statică), ImageInfo (valoarea rezultatului), și ImageFormat (enumul de format). Această pagină acoperă cum se potrivesc împreună ca un contract, dincolo de turul pe funcționalități în Funcționalități și Caracteristici.


Contractul de trei clase

  • ImageProbe — static, fără stare. Fiecare apel este independent; nu există nimic de configurat sau de eliberat.
  • ImageInfo — sigilat, imuabil. Toate cele cinci proprietăți (Format, Width, Height, BitDepth, FrameCount).
  • ImageFormat — un enum cu o valoare pentru fiecare format recunoscut, plus 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

Construirea directă a ImageInfo

Constructorul lui ImageInfo este public — doar format este necesar, toate celelalte parametre au implicit valoarea null. Acest lucru este util pentru testele unitare care au nevoie de un rezultat simulativ fără a interoga un fișier real:

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

Nu există nicio modalitate corespunzătoare de a mutate an ImageInfo după construcție — fiecare proprietate este doar de tip get, deci o instanță interogată sau construită poate fi transmisă și memorată în siguranță fără copiere defensivă.


Alegerea suprasarcinii potrivite

OverloadFolosiți când
ImageProbe.ProbeFile(path)Aveți o cale de fișier și doriți ImageInfo complet
ImageProbe.Probe(stream)Aveți deja un Stream deschis (seekable sau nu) și doriți ImageInfo complet
ImageProbe.Probe(data)Aveți deja octeții în memorie și doriți ImageInfo complet
ImageProbe.DetectFormat(stream) / (data)Trebuie să ramificați doar pe ImageFormat — săriți analiza antetului dincolo de semnătura formatului

ProbeFile deschide și citește fișierul în sine — nu este nevoie să se deschidă mai întâi un FileStream doar pentru a apela Probe(stream).


Interogare în lot a unui director

Deoarece ImageProbe nu aruncă niciodată, o scanare a directorului îl poate apela într-o buclă strânsă fără try/catch per fișier:

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

Orice fișier al cărui antet nu corespunde niciunuia dintre cele 11 formate recunoscute se rezolvă în ImageFormat.Unknown în loc să arunce — bucla de mai sus nu are niciodată nevoie de un bloc catch.


Contractul care nu aruncă niciodată

Acesta nu este un comportament incidental — este o parte deliberată a contractului API. Dacă antetul unui format recunoscut este trunchiat sau malformat în timpul parsării, ImageProbe tot returnează un ImageInfo cu Format setat la formatul pe care l-a recunoscut; nu propagă o excepție de parsare către apelant. Doar Format este garantat — tratează toate celelalte proprietăți ca opționale, indiferent de formatul detectat.


Probleme comune

ProblemăCauzăRemediere
Construit ImageInfo nu corespunde unui rezultat real de sondareInstanțele create manual nu validează consistența dintre câmpuriFolosește construcția manuală doar pentru dubluri de test, nu ca înlocuitor pentru sondarea fișierelor reale
Apelarea Probe când DetectFormat ar fi suficientAnaliză inutilă a antetului când este necesar doar formatulFolosește DetectFormat dacă nu citești niciodată Width/Height/BitDepth/FrameCount
Format Unknown pentru un fișier pe care te aștepți să fie suportatAntetul nu se potrivește cu niciuna dintre cele 11 semnături recunoscute, sau fișierul este într-un format complet diferitConfirmă fișierul față de lista formatelor suportate

FAQ

Pot să subclasific ImageInfo sau ImageProbe?

Nu. ImageInfo este sealed și ImageProbe este static — niciunul nu este conceput pentru subclasare sau instanțiere prin moștenire.

Este ImageProbe sigur pentru fire de execuție?

ImageProbe nu păstrează niciun stare mutabilă între apeluri — fiecare apel la Probe, ProbeFile sau DetectFormat este independent, făcând apelurile concurente din mai multe fire de execuție sigure.

Trebuie să eliberez ceva?

Nu. ImageProbe nu are resurse IDisposable proprii. Dacă transmiteţi un Stream pe care l-aţi deschis dvs., rămâneţi responsabil pentru eliberarea acelui flux — Probe(stream) nu îl închide.


API Reference Rezumat

Clasă / MetodăDescriere:
ImageProbe.ProbeFile(path)Probează un fișier prin cale
ImageProbe.Probe(stream)Probează un Stream
ImageProbe.Probe(data)Probează un byte[]
ImageProbe.DetectFormat(stream)Doar format, de la un Stream
ImageProbe.DetectFormat(data)Doar format, de la un byte[]
ImageInfo(format, width, height, bitDepth, frameCount)Constructor public — doar format este necesar
ImageInfo.Format / .Width / .Height / .BitDepth / .FrameCountProprietăți de rezultat numai în citire
ImageFormatEnum: Unknown, Png, Jpeg, Gif, Bmp, WebP, Ico, Tiff, Psd, Emf, Wmf, Dicom

Vezi și:

 Română