Frage

Ich arbeite an einer Anwendung, die druckt einen Ordner mit Bilddateien, einschließlich JPEG und TIFF.Die TIFF-Bilder sind in der Regel Schwarz und Weiß (1bpp).

Nach dem laden des Bildes möchte ich bestimmen wenn die Bild ist Farbe oder B&W oder Graustufen so kann ich senden Sie das Bild an den richtigen Drucker (Farbdrucker oder Schwarzweiß-Drucker).

Ich bin mit der Bitmap Konstruktor image = new Bitmap(filename); laden Sie das Bild.

EDIT: Die Antwort zu überprüfen, die pixel-Tiefe ist ideal für B&W.Irgendwelche Ideen auf, zu prüfen, ob das Bild in Graustufen, ohne das Durchlaufen jedes pixel?

War es hilfreich?

Lösung

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

Für JPEG-Dateien sollten Sie die entsprechenden Eigenschaften, die über die PropertyItems Sammlung der Bitmap.Diese können enthalten, die entsprechenden EXIF - tags, um festzustellen, das die bit-Tiefe.Der nächste Schritt wäre dann zu analysieren, die JPEG header und suchen Sie die "start of frame" - Markierung und dann die Anzahl der Komponenten in das Bild.

Die Letzte Methode ist das laden des JPEG in ein Bitmap-Objekt und vergleichen Sie die Anzahl der Pixel mit der Formel (Breite * Höhe * bytes_per_pixel).Also, wenn Sie laden Sie das bitmap und die Anzahl der bytes, die der eigentlichen raw-Daten gleich (Breite * Höhe), dann wissen Sie, es ist eine sichere Wette, dass die Bild hat 1 byte pro pixel und wird als solche in Graustufen.

Das Letzte, was Sie überprüfen möchten, dann ist das PixelFormat der bitmap selbst.

Für die TIFF Datei format sollten Sie tun die gleiche Sache mit die PropertyItems Sammlung und überprüfen Sie das entsprechende tag in der erwähnten spec.Wenn diese fehlschlagen, dann tun Sie das Bild byte-Vergleich und schließlich verwenden Sie die Eigenschaft PixelFormat als letzten Ausweg.

Andere Tipps

Gerade diese Eigenschaft überprüfen

image.PixelFormat

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

Auch wenn Sie mehr als nur Black & White an die B & W Drucker senden wollen, sollten Sie auch auch alle Graustufen dort senden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top