Estamos utilizando Java2D para cambiar el tamaño de las fotos cargadas en nuestro sitio web, pero nos encontramos con un problema (un antiguo aparentemente, cf .: http://forums.sun.com/thread.jspa?threadID=5425569) - algunos JPEGs particulares plantean un CMMException
cuando intentamos ImageIO.read()
un InputStream que contiene sus datos binarios :¿Existe una alternativa 100% Java a ImageIO para leer archivos JPEG?
java.awt.color.CMMException: Invalid image format
at sun.awt.color.CMM.checkStatus(CMM.java:131)
at sun.awt.color.ICC_Transform.<init>(ICC_Transform.java:89)
at java.awt.image.ColorConvertOp.filter(ColorConvertOp.java:516)
at com.sun.imageio.plugins.jpeg.JPEGImageReader.acceptPixels(JPEGImageReader.java:1114)
at com.sun.imageio.plugins.jpeg.JPEGImageReader.readImage(Native Method)
at com.sun.imageio.plugins.jpeg.JPEGImageReader.readInternal(JPEGImageReader.java:1082)
at com.sun.imageio.plugins.jpeg.JPEGImageReader.read(JPEGImageReader.java:897)
at javax.imageio.ImageIO.read(ImageIO.java:1422)
at javax.imageio.ImageIO.read(ImageIO.java:1326)
...
(cortó el resto de la traza de la pila, que es nuestro ImageIO.read()
llamada, código del servlet y tal)
Hemos reducido a las fotos tomadas con cámaras específicas, y selecciona una foto que los desencadenantes este error: http://img214.imageshack.us/img214/5121/estacaosp.jpg. Notamos que esto solo ocurre con la JVM de Sun (en Linux y Mac, recién probado en 1.6.0_20): una máquina de prueba con OpenJDK lee las mismas fotos sin problemas, posiblemente debido a una implementación diferente del lector de JPEG.
Lamentablemente, no podemos cambiar las JVM en producción ni usar soluciones dependientes de nativos como ImageMagick (http://www.imagemagick.org/).
Teniendo en cuenta que, mi pregunta es: ¿Existe un reemplazo para ImageIOs JPEG reader que puede manejar fotos como el vinculado? Si no, ¿hay otra solución de redimensionamiento de fotos de Java 100% pura que podamos usar?
Gracias!
Por cierto, soy consciente de que ImageIO no procesa imágenes CMYK (según http://stackoverflow.com/questions/2408613/problem-reading-jpeg-image-using-imageio-readfile-file).Pero la muestra es RGB (en lo que respecta a la Vista previa de Mac, estaría contento si alguien pudiera confirmarlo) – chesterbr
Abrí un error en la base de datos Oracle/Sun bug aquí: http://bugs.sun.com/bugdatabase /view_bug.do?bug_id=7064516 ¡Vota por él si aún estás interesado en la solución! –