2010-01-27 4 views
6

Ich arbeite an einer Anwendung, die einen Ordner mit Bilddateien einschließlich JPEG und TIFF druckt. Die TIFF-Bilder sind normalerweise Schwarz und Weiß (1bpp).Wie kann ich die Farbtiefe einer Bitmap überprüfen?

Nach dem Laden des Bildes, möchte ich, um zu bestimmen, ob das Bild ist Farbe oder B & W oder Graustufen so kann ich das Bild auf der rechten Seite Drucker (Farbdrucker oder Schwarzweißdrucker) senden.

Ich verwende den Bitmap Konstruktor image = new Bitmap(filename);, um das Bild zu laden.

EDIT: Die Antwort der Pixeltiefe zu prüfen B & W. groß ist Irgendwelche Ideen auf, zu überprüfen, ob das Bild Graustufen ist durch jedes Pixel ohne Iteration?

Antwort

3

Der richtige Weg, dies zu überprüfen ist:

Für JPEG-Dateien sollten Sie die entsprechenden Eigenschaften mit Hilfe der PropertyItems Sammlung des Bitmap überprüfen. Dies kann die entsprechenden EXIF Tags enthalten, um die Bittiefe zu bestimmen. Der nächste Schritt wäre, die JPEG header zu analysieren und nach dem 'Start of frame' Marker und dann nach der Anzahl der Komponenten im Bild zu suchen.

Die letzte Methode besteht darin, die JPEG in ein Bitmap-Objekt zu laden und die Anzahl der Pixel mit der forumla (width * height * bytes_per_pixel) zu vergleichen. Wenn Sie also die Bitmap und die Anzahl der Bytes der tatsächlichen Rohdaten gleich (Breite * Höhe) laden, wissen Sie, dass es sicher ist, dass das Bild 1 Byte pro Pixel hat und somit Graustufen ist.

Das letzte, was Sie überprüfen sollten, ist das PixelFormat der Bitmap selbst.

Für das Dateiformat TIFF sollten Sie dasselbe mit der PropertyItems-Sammlung tun und das entsprechende in der Spezifikation genannte Tag prüfen. Wenn diese fehlschlagen, führen Sie den Bildbytevergleich durch und verwenden Sie schließlich die PixelFormat-Eigenschaft als letzten Ausweg.

10

Überprüfen Sie einfach diese Eigenschaft

image.PixelFormat 

Es wird einer der Werte in System.Drawing.Imaging.PixelFormat

entsprechen Obwohl Sie mehr als nur Schwarz & White an die B & W Drucker senden wollen, können Sie sollte auch dort keine Graustufen senden.

+0

Verrückt, ich grub durch die Liste der Mitglieder für die Bitmap-Klasse, nicht sicher, wie ich es verpasst habe. –

+0

Ich habe die Antwort noch nicht akzeptiert, weil ich es getestet habe. Ich habe darüber nachgedacht, wie man auch Graustufen überprüft. Vielleicht sollte ich die Frage bearbeiten, um das zu klären. –

2

Verwenden Sie die PixelFormat-Eigenschaft.

Verwandte Themen