Java ImageIO IIOException: неподдерживаемый тип изображения?

Работа с изображениями на Java впервые и я получаю некоторые странные исключения, которые не очень хорошо документированы. Вот строка кода, которая дает сбой:

BufferedImage imgSelected = ImageIO.read(new File("/abs/url/to/file/image.jpg"));

Эта строка генерирует исключение IIOException с Unsuppo rted тип изображения как сообщение об исключении. Я проверил и перепроверил, действительно ли эта строка вызывает исключение, что объект File действителен, что URL действителен, и что image.jpg на самом деле является действительным JPG, который отлично загружается в других средствах просмотра изображений.

Что я могу сделать, чтобы получить дополнительную информацию о природе этого исключения? Это традиционный способ загрузки изображений в Java 7 или это устаревший / устаревший метод? Там просто не так много информации об этих исключениях типа "неподдерживаемый тип изображения", и, конечно же, ImageIO поддерживает файлы JPG!

Спасибо за любую помощь!

29
задан IAmYourFaja 24 August 2011 в 14:58
поделиться

1 ответ

Попробуйте проверить кодировку JPEG. ImageIO, например, не может читать изображения JPEG в кодировке CMYK. AFAIK, ImageIO не обновлялась годами, поэтому вы хотели бы попробовать и использовать официальную альтернативу / расширение: JAI ImageIO .

К сожалению, JAI ImageIO необходимо установить некоторые собственные библиотеки в JRE, что может быть нежелательным. Мы делаем следующее:

  • используем Apache Sanselan , чтобы определить, является ли это JPEG
  • , так как Sanselan не может читать и писать JPEG, используем старый AWT JPEGCodec: JPEGCodec.createJPEGDecoder(...)
  • для преобразования CMYK в RGB, затем мы получаем растр чтения BufferedImage и вручную конвертируем его (вы можете использовать профили ICC, но ручное преобразование соответствует нашим потребностям)

Вот мой вопрос, который возник из-за того, что ImageIO не поддерживает все типы изображений JPEG, и я там изложил немного больше моих выводов о том, почему вы получаете это сообщение: Чистая Java-альтернатива JAI ImageIO для обнаружения изображений CMYK

33
ответ дан 28 November 2019 в 01:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: