ImageIO не может читать определенные изображения
У меня есть следующая проблема. У нас есть веб-сервис с функцией загрузки изображений. Когда вы пытаетесь загрузить определенные изображения, это просто не удается. Эти образы имеют правильный тип MIME, они не CMYK (по крайней мере, GIMP говорят, что они в RGB). брошенное исключение: "неподдерживаемый тип изображения"! Проблема возникает, когда вы пытаетесь запустить эту команду:
BufferedImage img = ImageIO.read(new ByteArrayInputStream(image.getData()));
Я копаю немного глубже, и реальное исключение выбрасывается вместе с ImageIO.read(ImageInputStream stream)
, когда он пытается закрыть поток опять!
public static BufferedImage read(ImageInputStream stream)
throws IOException {
if (stream == null) {
throw new IllegalArgumentException("stream == null!");
}
Iterator iter = getImageReaders(stream);
if (!iter.hasNext()) {
return null;
}
ImageReader reader = (ImageReader)iter.next();
ImageReadParam param = reader.getDefaultReadParam();
reader.setInput(stream, true, true);
BufferedImage bi;
try {
bi = reader.read(0, param);
} finally {
reader.dispose();
stream.close();
}
return bi;
}
Образ, бросающий исключение, это, например,:
Я надеюсь, что кто-то может помочь мне выяснить, почему это происходит и как это исправить!
1 ответ:
Прилагаемое изображение имеет цветовую модель CMYK. Попробуйте преобразовать его в RGB.
Этот вопрос может быть полезен: Как правильно преобразовать CMYK в RGB в Java?