Çekirdek API
Temel API
Aspose.Imaging FOSS for .NET’nin tüm genel yüzeyi üç sınıftan oluşur: ImageProbe (statik cephe), ImageInfo (sonuç değeri), ve ImageFormat (format enum). Özellikler ve İşlevsellikler.
Üç sınıflı sözleşme
ImageProbe— statik, durumsuz. Her çağrı bağımsızdır; yapılandırılacak veya bırakılacak bir şey yoktur.ImageInfo— mühürlenmiş, değiştirilemez. Tüm beş özellik (Format,Width,Height,BitDepth,FrameCount).ImageFormat— tanınan her format için bir değer içeren bir enum, ayrıcaUnknown.
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 itImageInfo’ı doğrudan oluşturma
ImageInfo‘ın yapıcı metodu public — yalnızca format gereklidir, diğer tüm parametreler varsayılan olarak null değerini alır. Bu, gerçek bir dosyayı incelemeden bir geçici sonuç gerektiren birim testleri için faydalıdır:
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);Buna karşılık gelen bir yol yok mutate an ImageInfo oluşturulmadan sonra — her özellik sadece get-only olduğundan, taranmış veya oluşturulmuş bir örnek, savunmacı kopyalama yapmadan etrafa dağıtılabilir ve önbelleğe alınabilir.
Doğru aşırı yüklemeyi seçmek
| Overload | Kullanılacağı zaman |
|---|---|
ImageProbe.ProbeFile(path) | Bir dosya yolunuz var ve tam ImageInfo istiyorsunuz. |
ImageProbe.Probe(stream) | Zaten açık bir Stream (aranabilir olsun ya da olmasın) var ve tam ImageInfo istiyorsunuz. |
ImageProbe.Probe(data) | Bellekte zaten baytları var ve tam ImageInfo istiyorsunuz |
ImageProbe.DetectFormat(stream) / (data) | Yalnızca ImageFormat üzerine dallanmanız yeterlidir — format imzasının ötesindeki başlık ayrıştırmasını atlayın |
ProbeFile dosyayı kendisi açar ve okur — Probe(stream)‘yi çağırmak için önce bir FileStream açmaya gerek yoktur.
Dizini toplu tarama
ImageProbe hiçbir zaman hata fırlatmadığı için, bir dizin taraması onu dosya başına try/catch olmadan sıkı bir döngüde çağırabilir:
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}");
}Üstlenmiş 11 biçimden birine uymayan başlığa sahip herhangi bir dosya, hata fırlatmak yerine ImageFormat.Unknown‘a çözümlenir — yukarıdaki döngünün hiçbir zaman bir catch bloğuna ihtiyacı olmaz.
Hata fırlatmama sözleşmesi
Bu tesadüfi bir davranış değildir — API sözleşmesinin kasıtlı bir parçasıdır. Tanınan bir biçimin başlığı ayrıştırma sırasında kesilmiş ya da hatalıysa, ImageProbe yine de tanıdığı biçime ayarlı Format ile bir ImageInfo döndürür; çağırıcıya bir ayrıştırma istisnası yaymaz. Yalnızca Format garantilidir — hangi biçimin tespit edildiğine bakılmaksızın diğer tüm özellikleri isteğe bağlı olarak ele alın.
Sık Karşılaşılan Sorunlar
| Sorun | Neden | Düzeltme |
|---|---|---|
Oluşturulan ImageInfo gerçek bir prob sonucuyla eşleşmiyor | Manuel olarak oluşturulmuş örnekler alanlar arasındaki tutarlılığı doğrulamaz | Manuel oluşturmayı yalnızca test çiftleri için kullanın, gerçek dosyaları taramak için bir alternatif olarak kullanmayın |
Probe çağırmak, DetectFormat yeterli olurken | Sadece format gerektiğinde gereksiz başlık ayrıştırması | Eğer Width/Height/BitDepth/FrameCount hiç okumuyorsanız DetectFormat‘ı kullanın |
Destekleneceğini beklediğiniz bir dosya için Unknown formatı | Başlık, tanınan 11 imzadan hiçbirine uymuyor ya da dosya tamamen farklı bir formatta | Dosyayı şununla doğrulayın desteklenen formatlar listesi |
FAQ
ImageInfo veya ImageProbe’i alt sınıf olarak tanımlayabilir miyim?
Hayır. ImageInfo sealed ve ImageProbe static — ikisi de alt sınıflandırma veya kalıtım yoluyla örnekleme için tasarlanmamıştır.
ImageProbe iş parçacığı güvenli mi?
ImageProbe, çağrılar arasında değiştirilebilir bir durum tutmaz — Probe, ProbeFile veya DetectFormat‘e yapılan her çağrı bağımsızdır, bu da birden çok iş parçacığından eşzamanlı çağrıların güvenli olmasını sağlar.
Herhangi bir şeyi serbest bırakmam gerekiyor mu?
Hayır. ImageProbe kendi IDisposable kaynaklarına sahip değildir. Kendiniz açtığınız bir Stream geçerseniz, o akışı siz sorumlu olmaya devam edersiniz — Probe(stream) onu kapatmaz.
API Reference Özet
| Sınıf / Metot | Açıklama |
|---|---|
ImageProbe.ProbeFile(path) | Dosyayı yoluyla tara |
ImageProbe.Probe(stream) | Bir Stream tara |
ImageProbe.Probe(data) | Bir byte[] tara |
ImageProbe.DetectFormat(stream) | Yalnızca format, bir Stream‘den |
ImageProbe.DetectFormat(data) | Yalnızca format, bir byte[]den |
ImageInfo(format, width, height, bitDepth, frameCount) | Genel oluşturucu — yalnızca format gerekir |
ImageInfo.Format / .Width / .Height / .BitDepth / .FrameCount | Salt okunur sonuç özellikleri |
ImageFormat | Enum: Unknown, Png, Jpeg, Gif, Bmp, WebP, Ico, Tiff, Psd, Emf, Wmf, Dicom |