Ç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ıca 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

ImageInfo’ı 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

OverloadKullanı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

SorunNedenDüzeltme
Oluşturulan ImageInfo gerçek bir prob sonucuyla eşleşmiyorManuel olarak oluşturulmuş örnekler alanlar arasındaki tutarlılığı doğrulamazManuel 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 olurkenSadece 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 formattaDosyayı ş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 / MetotAçı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 / .FrameCountSalt okunur sonuç özellikleri
ImageFormatEnum: Unknown, Png, Jpeg, Gif, Bmp, WebP, Ico, Tiff, Psd, Emf, Wmf, Dicom

Ayrıca Bakınız

 Türkçe