Giriş

Aspose.Imaging FOSS for .NET ücretsiz, MIT lisanslı, açık kaynaklı bir kütüphanedir .NET geliştiricileri için, bir görüntü dosyasının ne olduğunu bilmesi gereken is — formatı, boyutları, bit derinliği ve kare sayısı — bunu çözümlemenin maliyetini ödemeden. Statik ImageProbe sınıf giriş noktasıdır: ProbeFile(path) diskten okur, Probe(stream) and Probe(data) bir akış ya da bayt dizisini kabul eder ve DetectFormat(stream) / DetectFormat(data) döndürür ImageFormat tam bir şey inşa etmeden enum değerini ImageInfo, sadece format üzerinden dallanması gereken çağırıcılar için. Her probe yöntemi bir değer döndürür. ImageInfo null olabilen nesne Width, Height, BitDepth, ve FrameCount özellikler, yalnızca algılanan formatın başlığı gerçekten o değeri taşıdığında doldurulur.

Bu, kasıtlı olarak dar bir araçtır ve bu da amacıdır. Piksel çözümlemesi yapmaz, görüntü renderlamaz veya formatlar arasında dönüştürme yapmaz — bunun için .NET için ticari Aspose.Imaging ürünü doğru seçimdir (aşağıda Açık Kaynak & Lisanslama altında bağlanmıştır). .NET için Aspose.Imaging FOSS yaptığı şey, “bu hangi format ve ne kadar büyük?” sorusuna mümkün olduğunca hızlı ve güvenli bir şekilde cevap vermektir; tam kodlamanın gereksiz olacağı problemler sınıfı için: bir yüklemeyi doğrulama, küçük resim düzeni boyutlandırma, karışık dosyalar topluluğunu ayırma veya ön işleme kontrolü için DICOM başlık alanlarını okuma.

Kütüphane MIT lisanslıdır, sıfır dış bağımlılığı vardır ve hem netstandard2.0 hem de net8.0 hedeflenir — açık kaynak ve ticari kullanım için ücretsizdir, telif hakkı veya yeniden dağıtım kısıtlaması yoktur.


Ana Özellikler

Bir Dosyayı İncelemek için Üç Yöntem

ImageProbe dosya yolu, akış ve bayt dizisi giriş noktaları sunar, böylece görüntü verisinin zaten boru hattınızda bulunduğu her yerde çalışır — diskte, bellekte zaten, ya da ağ üzerinden geliyor. DetectFormat, sadece format üzerinden dallanma ihtiyacınız olduğunda tam bir ImageInfo oluşturmayı atlar.

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

Yapılandırılmış, Dürüst Sonuçlar

ImageInfo Format‘i (bir ImageFormat enum değeri, başlık tanındığında her zaman ayarlanır) nullable Width, Height, BitDepth ve FrameCount ile birlikte ortaya koyar. “Nullable” burada gerçek iş yapıyor: alan doldurulması formatlara göre gerçekten değişir ve ImageInfo bir formatın başlığının taşımadığı bir değeri asla üretmez. Kullanımdan önce null‘i kontrol etmek doğru kalıptır, savunmacı bir son düşünce değildir.

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

11 Biçim, FOSS .NET Alanında Başka Hiçbir Şey Algılamayan Üç Taneyi İçerir

PNG, JPEG, GIF, BMP, WebP (lossy, lossless, and extended), ICO, TIFF, PSD, EMF, WMF, ve DICOM. Alan doldurma, kasıtlı olarak formatlara göre farklılık gösterir, eksiklikten değil — PNG genişlik, yükseklik, bit derinliğini taşır, and çerçeve sayısı (ancak FrameCount sabit kodlanmış 1, gerçek animasyonlu PNG çerçeve algılaması değil); FrameCount gömülü ikon boyutlarının dizinindeki gerçek bir sayıdır, ve a 0 ICO dizin girişinin boyut alanındaki bayt, format spesifikasyonuna göre 256px anlamına gelir; TIFF’in FrameCount dosyanın IFD zincirinin sınırlı bir yürüyüşünü yansıtır, sayfa başına bir IFD.

Bu on birin üçü — PSD, EMF/WMF ve DICOM — bizim bildiğimiz başka ücretsiz, açık kaynaklı .NET algılayıcıya sahip değil, bu da bu kütüphanenin var olmasının gerçek bir nedenidir.

WMF ve EMF: İki Eski Biçim, İki Farklı Sınır

Yerleştirilemeyen WMF hâlâ doğru şekilde ImageFormat.Wmf olarak tanımlanır, ancak yalnızca yerleştirilebilir WMF boyutları doldurur — başlığın birim/inç sınırlarından sabit kodlanmış 96 DPI dönüşümüyle türetilir, çünkü WMF kendisi mutlak piksel boyutu taşımaz. EMF’nin hiçbir açık genişlik/yükseklik alanı yoktur; boyutları bunun yerine EMF başlığındaki rclBounds cihaz-uzayı dikdörtgeninden gelir. İkisi de ImageInfo‘de dürüstçe yansıtılır: bir değer türetilemediğinde, özellik null olarak kalır, tahmin edilmez.

Görüntüleyici Olmadan DICOM Başlık Ayrıştırma

ImageProbe, Implicit VR Little Endian ve Explicit VR Little/Big Endian transfer syntax’leri boyunca DICOM başlıklarını okur, Rows‘i Height‘ye, Columns‘i Width‘e ve BitsAllocated‘i BitDepth‘ya çıkarır — hiçbir DICOM görüntüleyici veya dış görüntüleme bağımlılığı gerekmez. Ayrıştırma, tasarım gereği temkinlidir: tanımsız uzunlukta bir dizi öğesi, içeriğini tahmin etmeye çalışmak yerine yürütmeyi durdurur, böylece kısmen anlaşılan bir DICOM dosyası hatalı bir ImageInfo yerine kısmi bir ImageInfo‘a düşer.

Bozuk veya Kesilmiş Girdi Üzerinde Asla İstisna Atmaz

Probe, güvenilmeyen, kısmi veya hâlâ aktarımda olan dosyalar için tasarlanmıştır. Bir dosya bir formatın imzasına uyuyorsa ancak başlığı tam olarak ayrıştırılamıyorsa — kesilmiş bir indirme, bozuk bir yükleme — sonuç, bir istisna yerine yalnızca tespit edilen Format‘i taşır.

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

Hızlı Başlangıç

Paketi kurun, ardından bir dosyayı diskten sorgulayarak tespit edilen formatını, boyutlarını, bit derinliğini ve kare sayısını tek bir çağrıda okuyun; ardından ham baytları kullanarak yalnızca format kontrolü yapın:

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

Desteklenen Formatlar

Aspose.Imaging FOSS için .NET detects aşağıdaki tüm 11 format ve başlık düzeyinde meta verileri okur — piksel verilerini çözümlemez, bu yüzden raporlamak için bir “write” yeteneği yoktur. Alan doldurma formatlara göre değişir; yukarıdaki Ana Özelliklerdeki ayrıntılı dağılıma bakın.

BiçimUzantıDetectedGenişlik / YükseklikBit derinliğiKare sayısı
PNG.png✓✓✓✓
JPEG.jpg / .jpeg✓✓✓—
GIF.gif✓✓—✓
BMP.bmp✓✓✓—
WebP.webp✓✓——
ICO.ico✓✓✓✓
TIFF.tif / .tiff✓✓✓✓
PSD.psd✓✓✓—
EMF.emf✓✓ (sınırlarından)——
WMF.wmf✓✓ (yalnızca yerleştirilebilir, 96 DPI)——
DICOM.dcm✓✓ (Satırlar/Sütunlar)✓ (BitsAllocated)—

Açık Kaynak & Lisanslama

Aspose.Imaging FOSS for .NET MIT lisanslıdır ve dış bağımlılıkları yoktur. MIT lisansı, açık kaynak ve ticari projelerde kullanımına izin verir; telif ücreti yoktur ve yeniden dağıtımda kısıtlama bulunmaz. Kaynak kodu GitHub adresinde mevcuttur. Sadece format tespiti için tasarlanmıştır — bu görüntü formatlarını çözmek, düzenlemek veya dönüştürmek için Aspose.Imaging adresine bakın .NET — Enterprise Product.


Başlarken

İlgili Kaynaklar