Tengo un método que lee imágenes, las convierte (tamaño, formato) y las vuelve a escribir. Esto siempre funcionó muy bien, pero ahora me he encontrado con algunas imágenes JPEG (de una agencia de prensa) que obviamente contienen algunos metadatos (IPTC). Al convertir esas imágenes, los colores son todos incorrectos. Mi primera suposición fue que esas son imágenes CMYK pero no lo son.Imagen JPEG con colores incorrectos
El problema debe provenir de la lectura, ya que no importa si convierto la imagen a JPEG o PNG más pequeños, siempre tiene el mismo aspecto.
Al principio, usé ImageIO.read()
para leer la imagen. Ahora obtengo el ImageReader
real a través de ImageIO.getImageReadersByMIMEType()
e intenté decirle al lector que ignore los metadatos configurando el parámetro ignoreMetadata
de ImageReader#setInput(Object input, boolean seekForwardOnly, boolean ignoreMetadata)
, pero no tuvo éxito.
Luego creé una versión de la imagen sin los metadatos (usando Fireworks). Esa imagen se convierte correctamente.
La única diferencia que pude averiguar, es decir, que con la imagen no-trabajar el valor de la variable del lector colorSpaceCode
es , whilest con la imagen de trabajo, el valor es . También hay un outColorSpaceCode
que es para ambas imágenes.
Como source comment of the reader solo dice Establecer por setImageData devolución de llamada de código nativo. Un código de espacio de color IJG + NIFTY modificado Estoy realmente atrapado ahora. Entonces cualquier ayuda sería muy apreciada.
Puede obtener la imagen original (~ 3 MB) yendo here y haciendo clic en descargar. La imagen de la izquierda a continuación muestra lo que obtengo de la imagen original, la derecha muestra cómo se verá.
He tenido este problema por el tiempo que puedo recordar. Sucede en aproximadamente el 0.1% de los archivos jpg que encuentro. Por ejemplo: http://chan.sankakustatic.com/data/cd/81/cd81a9fa1305b9c1887ab1ac4904d166.jpg Aún no he encontrado una solución para mostrarlos correctamente en un panel. Supongo que es un error en el analizador JPEG de Java. –
Posible superposición: [La imagen cambia de color cuando se guarda con Java] (http://stackoverflow.com/questions/20789043/image-changes-color-when-saved-with-java) –