Pregunta

Estoy trabajando en una aplicación que imprime una carpeta de archivos de imagen, incluyendo JPEG y TIFF.Las imágenes TIFF son normalmente de color Negro y Blanco (1bpp).

Después de cargar la imagen, quiero determinar si la imagen es Color o B&W o Escala de grises por lo que puede enviar la imagen a la derecha de la impresora (impresora a color o en blanco y negro de la impresora).

Estoy usando el Bitmap constructor image = new Bitmap(filename); para cargar la imagen.

EDITAR: La respuesta para comprobar la profundidad de píxel es ideal para B&W.Cualquier idea sobre la comprobación de si la imagen está en escala de grises sin iterar a través de cada píxel?

¿Fue útil?

Solución

La correcta forma de comprobar esto es:

Para los archivos JPEG usted debe comprobar las propiedades adecuadas mediante la PropertyItems colección de mapa de bits.Este puede contener la correspondiente EXIF etiquetas para ayudar a determinar la profundidad de bits.El siguiente paso sería analizar la JPEG encabezado y busque el 'inicio de frame' marcador y, a continuación, el número de componentes de la imagen.

El último método es cargar los archivos JPEG en un objeto de mapa de bits y comparar el número de píxeles con el forumla (ancho * alto * bytes_per_pixel).Así que si usted carga el mapa de bits y el número de bytes de datos sin formato reales es igual a (ancho * alto), entonces usted sabe que es una apuesta segura que la imagen tiene 1 byte por píxel y, como tal, está en escala de grises.

La última cosa que usted querrá hacer es comprobar los PixelFormat del mapa de bits en sí.

Para el TIFF formato de archivo usted debe hacer lo mismo con el PropertyItems recopilación y verificación de la etiqueta correspondiente mencionado en la especificación.Si estos fallan, a continuación, hacer la imagen byte de comparación y, finalmente, el uso de la PixelFormat de la propiedad como un último recurso.

Otros consejos

Sólo tienes que comprobar esta propiedad

image.PixelFormat

Será coincidir con uno de los valores en System.Drawing.Imaging.PixelFormat

A pesar de que se quiere enviar algo más que Blanco y Negro para el B & W impresora, también debe enviar ningún escalas de grises allí también.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top