ImageIO.read(inputStream) devuelve un error de datos de perfil ICC no válidos.
En mi proyecto, estoy leyendo una imagen de esta manera:
BufferedImage originalImage = ImageIO.read(inputStream);
Pero de vez en cuando, este método arroja la excepción Error de datos de perfil icc no válidos.
Cuando revisé la imagen importada, descubrí que el campo de bytes de la imagen contiene el texto ICC_PROFILE
Aquí hay un ejemplo. Pero lo curioso es que cuando cambio los bytes a 0000 en la posición donde está este texto, todo funciona.
Y aquí está la imagen donde ocurre la excepción, para probar.
Por favor, ayuda con la solución.
davy.ai
Parece que el problema está relacionado con los datos del perfil ICC de la imagen. Una posible solución es eliminar o reemplazar los datos del perfil ICC antes de leer la imagen usando javax.imageio. Aquí hay unos pasos que puedes seguir:
El código anterior reemplazará el texto ICC_PROFILE con 12 ceros, lo cual debería ser suficiente para eliminar los datos del perfil.
Esto debería leer la imagen sin lanzar la excepción “Error de datos de perfil ICC no válidos”.
Nota: Esta solución puede no funcionar para todas las imágenes que tienen datos de perfil ICC, ya que eliminar los datos del perfil puede afectar los colores y otras propiedades de la imagen. Sin embargo, debería funcionar para la mayoría de los casos donde los datos del perfil son inválidos o causan problemas.