Introduzione

Aspose.Imaging FOSS per .NET è una libreria gratuita, con licenza MIT, open-source per gli sviluppatori .NET che hanno bisogno di sapere che cosa è un file immagine is — il suo formato, le dimensioni, la profondità di bit e il conteggio dei fotogrammi — senza sostenere il costo della decodifica. The static ImageProbe class è il punto di ingresso: ProbeFile(path) legge dal disco, Probe(stream) and Probe(data) accetta uno stream o un array di byte, e DetectFormat(stream) / DetectFormat(data) restituisce il ImageFormat valore enum senza costruire un completo ImageInfo, per gli chiamanti che hanno solo bisogno di ramificare in base al formato. Ogni metodo di probing restituisce un ImageInfo oggetto con nullable Width, Height, BitDepth, e FrameCount proprietà, popolate solo quando l’intestazione del formato rilevato contiene effettivamente quel valore.

Questo è uno strumento deliberatamente ristretto, ed è questo il punto. Non decodifica pixel, non rende immagini e non converte tra formati — per questo, il prodotto commerciale Aspose.Imaging per .NET è la scelta giusta (collegato qui sotto nella sezione Open Source e Licenze). Ciò che Aspose.Imaging FOSS per .NET fa è il compito molto più piccolo e molto più comune di rispondere a "qual è il formato di questo, e quanto è grande?" nel modo più veloce e sicuro possibile, per la classe di problemi in cui una decodifica completa sarebbe uno spreco di lavoro: convalidare un caricamento, dimensionare un layout di miniature, gestire una serie di file misti, o leggere i campi dell’intestazione DICOM per un controllo di pre-elaborazione.

La libreria è rilasciata sotto licenza MIT, senza dipendenze esterne, e supporta sia netstandard2.0 sia net8.0 — è gratuita sia per usi open-source che commerciali, senza royalty né restrizioni di redistribuzione.


Caratteristiche principali

Tre modi per analizzare un file

ImageProbe offre punti di ingresso per percorsi di file, stream e array di byte, quindi si adatta ovunque i dati dell’immagine siano già presenti nella tua pipeline — su disco, già in memoria o in arrivo sulla rete. DetectFormat evita di costruire un ImageInfo completo quando hai solo bisogno di distinguere il formato.

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

Risultati Strutturati e Onesti

ImageInfo espone Format (un valore enum ImageFormat, sempre impostato una volta riconosciuta l’intestazione) insieme a Width nullable, Height, BitDepth e FrameCount. “Nullable” svolge un ruolo reale qui: la popolazione dei campi varia davvero in base al formato, e ImageInfo non fabbrica mai un valore che l’intestazione di un formato non trasporta. Verificare la presenza di null prima dell’uso è il modello corretto, non un pensiero difensivo successivo.

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

11 Formati, Inclusi Tre che Nessun Altro nello Spazio FOSS .NET Rileva

PNG, JPEG, GIF, BMP, WebP (lossy, lossless, e extended), ICO, TIFF, PSD, EMF, WMF e DICOM. La popolazione dei campi differisce per formato intenzionalmente, non per omissione — PNG contiene larghezza, altezza, profondità di bit, and conteggio dei fotogrammi (anche se FrameCount è un valore hardcoded 1, non è una reale rilevazione di fotogrammi animated-PNG); FrameCount è un conteggio genuino delle dimensioni delle icone incorporate nella sua directory, e un 0 byte nel campo dimensione di una voce della directory ICO indica 256px, secondo le specifiche del formato; quello di TIFF’s FrameCount riflette un percorso limitato della catena IFD del file, un IFD per pagina.

Tre di questi undici — PSD, EMF/WMF e DICOM — non hanno alcun altro rilevatore .NET libero e open-source di cui siamo a conoscenza, il che è una delle ragioni reali per cui questa libreria esiste.

WMF ed EMF: Due Formati Legacy, Due Limiti Diversi

Il WMF non posizionabile è comunque identificato correttamente come ImageFormat.Wmf, ma solo il WMF posizionabile popola le dimensioni — derivate dai limiti di unità-per-pollice dell’intestazione tramite una conversione hardcoded a 96 DPI, poiché il WMF stesso non trasporta una dimensione pixel assoluta. L’EMF non ha alcun campo esplicito di larghezza/altezza; le sue dimensioni provengono invece dal rettangolo rclBounds nello spazio dispositivo dell’intestazione EMF. Entrambi sono onestamente riflessi in ImageInfo: quando un valore non può essere derivato, la proprietà rimane null anziché indovinare.

Parsing dell’Intestazione DICOM senza un Visualizzatore

ImageProbe legge le intestazioni DICOM attraverso le sintassi di trasferimento Implicit VR Little Endian e Explicit VR Little/Big Endian, estraendo Rows in Height, Columns in Width e BitsAllocated in BitDepth — non è necessario alcun visualizzatore DICOM o dipendenza di imaging esterna. L’analisi è conservativa per progettazione: un elemento di sequenza a lunghezza indefinita interrompe il percorso anziché indovinare il suo contenuto, così un file DICOM parzialmente compreso si degrada in un ImageInfo parziale invece di uno errato.

Non genera eccezioni su input malformato o troncato

Probe è progettato per file non attendibili, parziali o in transito. Se un file corrisponde alla firma di un formato ma la sua intestazione non può essere completamente analizzata — un download troncato, un upload corrotto — il risultato contiene solo il Format rilevato anziché un’eccezione.

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

Avvio rapido

Installa il pacchetto, quindi analizza un file dal disco per leggere il formato rilevato, le dimensioni, la profondità di bit e il conteggio dei fotogrammi in una sola chiamata, seguita da un controllo solo sul formato usando i byte grezzi:

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

Formati supportati

Aspose.Imaging FOSS per .NET detects tutti gli 11 formati elencati di seguito e legge i metadati a livello di intestazione — non decodifica i dati dei pixel, quindi non c’è alcuna capacità di “write” da segnalare. La popolazione dei campi varia a seconda del formato; vedere la suddivisione dettagliata in Caratteristiche principali sopra.

FormatoEstensioneDetectedLarghezza / AltezzaProfondità di bitConteggio fotogrammi
PNG.png✓✓✓✓
JPEG.jpg / .jpeg✓✓✓—
GIF.gif✓✓—✓
BMP.bmp✓✓✓—
WebP.webp✓✓——
ICO.ico✓✓✓✓
TIFF.tif / .tiff✓✓✓✓
PSD.psd✓✓✓—
EMF.emf✓✓ (da limiti)——
WMF.wmf✓✓ (solo posizionabile, 96 DPI)——
DICOM.dcm✓✓ (Righe/Colonne)✓ (BitsAllocated)—

Open Source e Licenze

Aspose.Imaging FOSS per .NET è con licenza MIT senza dipendenze esterne. La licenza MIT consente l’uso sia in progetti open source sia commerciali senza royalty o restrizioni sulla redistribuzione. Il codice sorgente è disponibile su GitHub. È intenzionalmente limitato solo al rilevamento del formato — per decodifica, modifica o conversione di questi formati immagine, consultare Aspose.Imaging per .NET — Prodotto Enterprise.


Iniziare

Risorse correlate