Εισαγωγή

Aspose.Imaging FOSS για .NET είναι μια δωρεάν, αδειοδοτημένη υπό MIT, βιβλιοθήκη ανοιχτού κώδικα για προγραμματιστές .NET που χρειάζονται να γνωρίζουν τι είναι ένα αρχείο εικόνας is — τη μορφή του, τις διαστάσεις, το βάθος χρώματος και τον αριθμό πλαισίων — χωρίς να πληρώνετε το κόστος της αποκωδικοποίησής του. Η στατική ImageProbe κλάση είναι το σημείο εισόδου: ProbeFile(path) διαβάζει από το δίσκο, Probe(stream) and Probe(data) δέχεται μια ροή ή πίνακα byte, και DetectFormat(stream) / DetectFormat(data) επιστρέφει το ImageFormat τιμή enum χωρίς να δημιουργήσει ένα πλήρες ImageInfo, για κλήσεις που χρειάζονται μόνο να διακλαδώσουν βάσει μορφής. Κάθε probe method επιστρέφει ένα ImageInfo αντικείμενο με nullable Width, Height, BitDepth, και FrameCount ιδιότητες, που γεμίζονται μόνο όταν η κεφαλίδα του ανιχνευμένου μορφότυπου πραγματικά περιέχει αυτήν την τιμή.

Αυτό είναι ένα σκόπιμα στενό εργαλείο, και αυτό είναι το νόημα. Δεν αποκωδικοποιεί pixel, δεν αποδίδει εικόνες και δεν μετατρέπει μεταξύ μορφών — για αυτό, το εμπορικό προϊόν Aspose.Imaging για .NET είναι η σωστή επιλογή (συνδεδεμένο παρακάτω στην ενότητα Ανοιχτός Κώδικας & Άδειες). Αυτό που κάνει το Aspose.Imaging FOSS για .NET είναι η πολύ μικρότερη, πολύ πιο συνηθισμένη εργασία του να απαντά «what format is this, and how big is it?» όσο πιο γρήγορα και ασφαλώς γίνεται, για την κατηγορία προβλημάτων όπου η πλήρης αποκωδικοποίηση θα ήταν άσκοπη εργασία: η επικύρωση ενός ανεβάσματος, η μέτρηση μεγέθους μιας διάταξης μικρογραφιών, η ταξινόμηση μιας παρτίδας μικτών αρχείων ή η ανάγνωση πεδίων κεφαλίδας DICOM για έναν έλεγχο προεπεξεργασίας.

Η βιβλιοθήκη είναι αδειοδοτημένη με MIT, χωρίς εξωτερικές εξαρτήσεις και στοχεύει τόσο το netstandard2.0 όσο και το net8.0 — δωρεάν για ανοιχτό κώδικα και εμπορική χρήση, χωρίς δικαιώματα ή περιορισμούς διανομής.


Βασικά Χαρακτηριστικά

Τρεις Τρόποι για την Ανίχνευση ενός Αρχείου

ImageProbe προσφέρει σημεία εισόδου για διαδρομή αρχείου, ροή και πίνακα byte, έτσι ταιριάζει όπου και αν τα δεδομένα εικόνας βρίσκονται ήδη στη διαδικασία σας — στον δίσκο, ήδη στη μνήμη, ή φθάνουν μέσω δικτύου. Το DetectFormat παραλείπει τη δημιουργία ενός πλήρους ImageInfo όταν χρειάζεστε μόνο να διακλαδώσετε με βάση τη μορφή.

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

Δομημένα, Ειλικρινή Αποτελέσματα

ImageInfo αποκαλύπτει το Format (μια τιμή enum τύπου ImageFormat, που ορίζεται πάντα μόλις αναγνωριστεί η κεφαλίδα) μαζί με nullable Width, Height, BitDepth και FrameCount. “Nullable” κάνει πραγματική δουλειά εδώ: η πλήρωση των πεδίων διαφέρει πραγματικά ανά μορφή, και το ImageInfo ποτέ δεν κατασκευάζει μια τιμή που η κεφαλίδα μιας μορφής δεν μεταφέρει. Ο έλεγχος για null πριν τη χρήση είναι το σωστό πρότυπο, όχι μια αμυντική σκέψη μετά το γεγονός.

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

11 Μορφές, Συμπεριλαμβανομένων Τριών Που το FOSS .NET Space Δεν Ανιχνεύει Τίποτα Άλλο

PNG, JPEG, GIF, BMP, WebP (απώλειας, χωρίς απώλεια και επεκταμένο), ICO, TIFF, PSD, EMF, WMF, και DICOM. Η πληρότητα των πεδίων διαφέρει σκόπιμα ανά μορφότυπο, όχι λόγω παράλειψης — το PNG περιλαμβάνει πλάτος, ύψος, βάθος bit, and αριθμό πλαισίων (αν και FrameCount είναι κωδικοποιημένο σκληρά 1, όχι πραγματική ανίχνευση πλαισίων animated-PNG); FrameCount είναι ένας αληθινός αριθμός των ενσωματωμένων μεγεθών εικονιδίων στον κατάλογό του, και ένα 0 το byte στο πεδίο διάστασης μιας εγγραφής καταλόγου ICO σημαίνει 256px, σύμφωνα με την προδιαγραφή μορφής· του TIFF’s FrameCount αντικατοπτρίζει μια περιορισμένη περιπλάνηση της αλυσίδας IFD του αρχείου, ένα IFD ανά σελίδα.

Τρία από αυτά τα έντεκα — PSD, EMF/WMF, και DICOM — δεν έχουν άλλον ελεύθερο, ανοιχτού κώδικα .NET ανιχνευτή που να γνωρίζουμε, κάτι που αποτελεί πραγματικό λόγο για την ύπαρξη αυτής της βιβλιοθήκης.

WMF και EMF: Δύο Κληρονομικές Μορφές, Δύο Διαφορετικά Όρια

Το μη-εγγράψιμο WMF εξακολουθεί να αναγνωρίζεται σωστά ως ImageFormat.Wmf, αλλά μόνο το εγγράψιμο WMF γεμίζει διαστάσεις — προερχόμενες από τα όρια μονάδων ανά ίντσα της κεφαλίδας μέσω σκληροκωδικοποιημένης μετατροπής 96 DPI, επειδή το WMF από μόνο του δεν μεταφέρει απόλυτο μέγεθος pixel. Το EMF δεν έχει καθόλου ρητό πεδίο πλάτος/ύψος· οι διαστάσεις του προέρχονται από το ορθογώνιο rclBounds του χώρου συσκευής στην κεφαλίδα EMF. Και τα δύο αντικατοπτρίζονται ειλικρινά στο ImageInfo: όταν μια τιμή δεν μπορεί να προκύψει, η ιδιότητα παραμένει null αντί να μαντεύεται.

Ανάλυση Κεφαλίδας DICOM Χωρίς Προβολέα

ImageProbe διαβάζει τις κεφαλίδες DICOM σε συντακτικά μεταφοράς Implicit VR Little Endian και Explicit VR Little/Big Endian, εξάγοντας το Rows στο Height, το Columns στο Width και το BitsAllocated στο BitDepth — δεν απαιτείται προβολέας DICOM ή εξωτερική εξάρτηση απεικόνισης. Η ανάλυση είναι συντηρητική από σχεδίαση: ένα στοιχείο ακολουθίας άγνωστου μήκους σταματά τη διαδικασία αντί να εικάζει το περιεχόμενό του, έτσι ένα μερικώς κατανοητό αρχείο DICOM υποβαθμίζεται σε μερικό ImageInfo αντί για λανθασμένο.

Ποτέ δεν ρίχνει εξαίρεση σε κακοδιαμορφωμένη ή περικομμένη είσοδο

Probe έχει σχεδιαστεί για μη αξιόπιστα, μερικά ή σε εξέλιξη αρχεία. Εάν ένα αρχείο ταιριάζει με την υπογραφή μιας μορφής αλλά η κεφαλίδα του δεν μπορεί να αναλυθεί πλήρως — μια περικομμένη λήψη, μια κατεστραμμένη μεταφόρτωση — το αποτέλεσμα περιέχει μόνο το ανιχνευμένο Format αντί για εξαίρεση.

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

Γρήγορη Εκκίνηση

Εγκαταστήστε το πακέτο, έπειτα ελέγξτε ένα αρχείο από τον δίσκο για να διαβάσετε τη ανιχνευμένη μορφή του, τις διαστάσεις, το βάθος χρωμάτων και τον αριθμό πλαισίων σε μία κλήση, ακολουθούμενη από έναν έλεγχο μόνο μορφής χρησιμοποιώντας τα ακατέργαστα byte:

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

Υποστηριζόμενες Μορφές

Aspose.Imaging FOSS για .NET detects όλες οι 11 μορφές παρακάτω και διαβάζει μεταδεδομένα επιπέδου κεφαλίδας — δεν αποκωδικοποιεί δεδομένα εικονοστοιχείου, έτσι δεν υπάρχει δυνατότητα «write» προς αναφορά. Η πληρότητα των πεδίων διαφέρει ανά μορφή· δείτε την αναλυτική διάσπαση στα Βασικά Χαρακτηριστικά παραπάνω.

ΜορφήΕπέκτασηDetectedΠλάτος / ΎψοςΒάθος bitΑριθμός πλαισίων
PNG.png✓✓✓✓
JPEG.jpg / .jpeg✓✓✓—
GIF.gif✓✓—✓
BMP.bmp✓✓✓—
WebP.webp✓✓——
ICO.ico✓✓✓✓
TIFF.tif / .tiff✓✓✓✓
PSD.psd✓✓✓—
EMF.emf✓✓ (από τα όρια)——
WMF.wmf✓✓ (μόνο τοποθετήσιμο, 96 DPI)——
DICOM.dcm✓✓ (Γραμμές/Στήλες)✓ (BitsAllocated)—

Ανοιχτός Κώδικας & Άδειες

Aspose.Imaging FOSS για το .NET είναι αδειοδοτημένο υπό MIT με μηδενικές εξωτερικές εξαρτήσεις. Η άδεια MIT επιτρέπει τη χρήση τόσο σε ανοιχτό-πηγαία όσο και σε εμπορικά έργα χωρίς δικαιώματα ή περιορισμούς στην αναδιανομή. Ο κώδικας είναι διαθέσιμος στο GitHub. Είναι σκόπιμα περιορισμένο μόνο στην ανίχνευση μορφών — για αποκωδικοποίηση, επεξεργασία ή μετατροπή αυτών των μορφών εικόνας, δείτε Aspose.Imaging για το .NET — Enterprise Product.


Ξεκινώντας

Σχετικοί Πόροι