Domanda

Sto lavorando su un'applicazione che consente di stampare una cartella di file immagine, tra cui JPEG e TIFF.Il TIFF immagini sono di solito in Bianco e Nero (1bpp).

Dopo aver caricato l'immagine, voglio capire se l'immagine è Colore o B&W o Scala di grigi è possibile inviare l'immagine a destra della stampante (stampante a colori o in bianco e nero stampante).

Sto utilizzando il Bitmap costruttore image = new Bitmap(filename); per caricare l'immagine.

EDIT: La risposta per controllare la profondità di pixel è grande per il B&W.Tutte le idee su come verificare se l'immagine è in scala di grigi senza scorrere ogni pixel?

È stato utile?

Soluzione

Il corretto modo per verificare questo è:

Per i file JPEG si dovrebbe verificare le proprietà appropriate utilizzando il PropertyItems raccolta di Bitmap.Questo può contenere appropriato EXIF tag per determinare la profondità di bit.Il passo successivo sarebbe quello di analizzare il JPEG intestazione e cerca 'inizio del frame" marker e quindi il numero di componenti dell'immagine.

L'ultimo metodo è quello di caricare l'immagine JPEG in un oggetto Bitmap e confrontare il numero di pixel con la forumla (lunghezza * larghezza * altezza * bytes_per_pixel).Quindi, se si carica l'immagine bitmap e il numero di byte di dati raw effettivi è uguale a (larghezza * altezza) poi, sai, è una scommessa sicura che l'immagine è di 1 byte per pixel, e come tale è in scala di grigi.

L'ultima cosa che si desidera controllare è il PixelFormat della bitmap stesso.

Per il TIFF formato di file che si dovrebbe fare la stessa cosa utilizzando il PropertyItems di raccolta e controllare il tag appropriato indicato nelle specifiche.Se questi non riescono poi a fare l'immagine di confronto byte per byte e, infine, utilizzare il PixelFormat proprietà come ultima risorsa.

Altri suggerimenti

Basta controllare questa proprietà

image.PixelFormat

Sarà corrispondere a uno dei valori a System.Drawing.Imaging.PixelFormat

Anche se si vuole inviare più di un semplice bianco e nero alla stampante B & W, si dovrebbe anche inviare eventuali scale di grigio anche lì.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top