2010-01-27 27 views
6

JPEG ve TIFF dahil olmak üzere görüntü dosyalarının bir klasörünü yazdırmayı sağlayan bir uygulama üzerinde çalışıyorum. TIFF görüntüleri genellikle Siyah Beyaz (1bpp). görüntü yüzden doğru yazıcıya (renkli yazıcı veya siyah beyaz yazıcıda) görüntüyü gönderebilir & Grayscale W veya Renk veya B iseBitmap'in renk derinliğini nasıl kontrol edebilirim?

görüntüyü yükledikten sonra, ben belirlemek istiyorum.

ben resim yüklemek için Bitmap yapıcısı image = new Bitmap(filename); kullanıyorum.

DÜZENLEME: piksel derinliğini kontrol etmek için cevap B & W. görüntü her pikselde yineleme olmadan gri tonlama ise denetleme konusundaki herhangi bir fikir harika? Eğer B & W yazıcıya sadece Siyah & Beyaz daha göndermek isteyeyim rağmen

cevap

3

Bunu denetlemek için doğru yolu:

JPEG dosyaları için, Bitmap PropertyItems koleksiyonunu kullanarak uygun özellikleri kontrol etmelidir. Bu, bit derinliğini belirlemeye yardımcı olması için uygun EXIF etiketlerini içerebilir. Bir sonraki adım, JPEG header'u ayrıştırmak ve 'çerçeve başlangıcı' işaretleyicisini ve ardından görüntüdeki bileşenlerin sayısını aramaktır.

son yöntem, bir bit eşlem nesnesine JPEG yüklemek ve Forumla (genişlik x yükseklik * bytes_per_pixel) piksel sayısını karşılaştırmaktır. Bu nedenle, bitmapi ve gerçek ham verilerin bayt sayısını yüklerseniz (genişlik * yükseklik) eşitse, görüntünün piksel başına 1 bayt olduğu ve gri tonlamalı olduğu konusunda emin bir bahis olduğunu bilirsiniz. Kontrol etmek isteyeceksiniz

son şey bitmap kendisinin PixelFormat olduğunu.

TIFF dosya biçimi için, PropertyItems koleksiyonunu kullanarak aynı şeyi yapmak ve teknik özelliklerde bahsedilen uygun etiketi kontrol etmelidir. Bu başarısız olursa, görüntü bayt karşılaştırması yapın ve son olarak PixelFormat özelliğini son çare olarak kullanın.

10

Sadece System.Drawing.Imaging.PixelFormat

sizi O değerlerden biri maç olacak bu özelliği

image.PixelFormat 

kontrol Ayrıca orada herhangi bir gri ölçekler göndermelidir.

+0

Çılgın, ben Bitmap sınıfı için üyelerin listesi üzerinden çıkardı, emin değilim ben kaçırdım nasıl. –

+0

Henüz cevabı kabul etmedim çünkü test ediyordum. Ben de gri tonlamayı nasıl kontrol edeceğimi düşündüm. Belki de bunu açıklığa kavuşturmak için soruyu düzenlemeliyim. –

2

onun PixelFormat özelliğini kullanın.

İlgili konular