Aspose.Imaging FOSS Core API ile .NET'de Nasıl Çalışılır

Aspose.Imaging FOSS Core API ile .NET'de Nasıl Çalışılır

Aspose.Imaging FOSS, .NET’ın genel yüzeyi için üç sınıftan oluşur: ImageProbe, ImageInfo ve ImageFormat. Bu kılavuz, paketi kurmayı ve üçünü bir arada kullanarak bir formatı algılamayı ve bir dosyadan, bir akıştan ve bir bayt dizisinden başlık meta verilerini okumayı anlatır.

Adım Adım Kılavuz

Adım 1: Paketi Yükleyin

git clone https://github.com/aspose-imaging-foss/Aspose.Imaging-FOSS-for-.NET.git
cd Aspose.Imaging-FOSS-for-.NET
dotnet build

Paket, net8.0 ve netstandard2.0 hedef alır ve dış çalışma zamanı bağımlılığı yoktur.


Adım 2: Ad Alanını İçe Aktarın

Tek bir using yönergesi ekleyin — ImageProbe, ImageInfo ve ImageFormat, tüm API yüzeyini ortaya çıkarır, böylece içe aktarılacak başka bir şey kalmaz:

using Aspose.Imaging.Foss;

Adım 3: Dosyayı Yola Göre Sondaj Et

ImageProbe.ProbeFile dosya başlığının sadece gerekli kısmını okuyarak bir ImageInfo sonucu doldurur — piksel verilerini asla çözmez:

var info = ImageProbe.ProbeFile("photo.jpg");
Console.WriteLine($"{info.Format}: {info.Width}x{info.Height}, {info.BitDepth}-bit");

Adım 4: Akışı veya Bayt Dizisini Sondaj Et

Görüntü zaten bellek içinde olduğunda veya bir akıştan (yükleme, ağ yanıtı) geldiğinde, önce geçici bir dosyaya yazmak yerine bunları doğrudan kabul eden aşırı yüklemeleri kullanın:

byte[] bytes = File.ReadAllBytes("photo.jpg");
var infoFromBytes = ImageProbe.Probe(bytes);

using var stream = File.OpenRead("photo.jpg");
var infoFromStream = ImageProbe.Probe(stream);

Probe(stream) hem arama yapılabilir hem de arama yapılamaz akışlarla çalışır.


Adım 5: Yalnızca Biçime İhtiyacınız Varsa DetectFormat Kullanın

Yalnızca biçime göre dallanmanız gerekiyorsa ve boyutlar, bit derinliği ya da çerçeve sayısına ihtiyacınız yoksa, DetectFormat başlığın geri kalan ayrıştırmasını atlar:

var format = ImageProbe.DetectFormat(bytes);
if (format == ImageFormat.Dicom)
{
    // route to DICOM-specific handling
}

Adım 6: Nullable ImageInfo Alanlarını Güvenli Bir Şekilde Okuyun

Width, Height, BitDepth ve FrameCount nullable — yalnızca tespit edilen formatın başlığı gerçekten o değeri taşıdığında doldurulur. Format, başlık tanındığında her zaman ayarlanan tek alandır:

var info = ImageProbe.ProbeFile("scan.dcm");
if (info.Width.HasValue && info.Height.HasValue)
{
    Console.WriteLine($"{info.Format}: {info.Width}x{info.Height}");
}
else
{
    Console.WriteLine($"{info.Format}: dimensions not available in this header");
}

Yaygın Sorunlar ve Çözümler

Biçim şu şekilde gösterilir ImageFormat.Unknown. Dosyanın başlığı 11 tanınan biçimden (PNG, JPEG, GIF, BMP, WebP, ICO, TIFF, PSD, EMF, WMF, DICOM) hiçbirine uymuyor. Dosyanın gerçekten bu biçimlerden biri olduğundan emin olun — ImageProbe tanınmayan bir başlık için hata fırlatmaz, rapor eder Unknown bunun yerine.

Width/Height are null her ne kadar Format ayarlandı. Her formatın başlığı tüm alanları taşımaz ve kesilmiş bir dosya bir alanın baytlarından önce kesilebilir. Kontrol edin Format ilk olarak, ardından geri kalanını isteğe bağlı olarak ele alın.

Calling Probe when DetectFormat yapardı. Probe and ProbeFile tam başlığı ayrıştır; DetectFormat yalnızca formatı tanımlamak için yeterli kadar okur. Kullan DetectFormat eğer hiç okumazsan Width/Height/BitDepth/FrameCount.

Çözümlenmiş piksel verileri bekleniyor. ImageProbe asla çözümlamaz, render yapmaz veya görüntü içeriğini dönüştürmez — yalnızca başlık meta verilerini okur. Kod çözme ve piksel seviyesindeki işlemler ticari Aspose.Imaging SDK’sını gerektirir.

Sıkça Sorulan Sorular

Kısaltılmış veya bozuk bir dosyayı incelersem ne olur?

ImageProbe bozuk veya kısaltılmış girdi üzerinde hiçbir zaman istisna atmaz. Kısmi bir ImageInfo döndürür — Format, başlığın format işaretçisi tanındığında, dosyanın geri kalanı kesilmiş olsa bile ayarlanır.

ImageProbe iş parçacığı güvenli mi?

Evet. ImageProbe statiktir ve çağrılar arasında değiştirilebilir bir durum tutmaz, bu yüzden birden çok iş parçacığından gelen eşzamanlı çağrılar güvenlidir.

Gerçek bir dosyayı incelemeden doğrudan bir ImageInfo oluşturabilir miyim?

Evet. ImageInfo‘ın yapıcı metodu halka açıktır ve yalnızca format gerektirir — test çiftleri oluşturmak için yararlıdır: new ImageInfo(ImageFormat.Png, width: 64, height: 48).

Herhangi bir şeyi temizlemem gerekiyor mu?

Hayır. ImageProbe kendi başına hiçbir IDisposable kaynağı tutmaz. Kendi açtığınız bir Stream geçirirseniz, onu imha etmekten siz sorumlusunuz.

Ayrıca Bakınız

 Türkçe