Подтвердить что ты не робот

Проблема с использованием ImageIO.read

Хорошо, у меня есть изображение, которое я пытаюсь прочитать. Проблема в том, что Image.read(file) возвращает NULL.

File file = new File("C:\\images\\image1.jpg");
if(file.exists()){
    System.out.println("Image file exists.");
    BufferedImage originalImage = ImageIO.read(file);

}

Таким образом, изображение существует, но ImageIO.read(file) возвращает NULL. Никаких брошенных ошибок нет!!! Что происходит?

Это то, что я пробовал до сих пор:

  • Хорошо, моя среда - Windows 7. I с одним из тех изображений, которые поставляется с Windows и имеет возможность прочитайте изображение.
  • Изображение1.jpg было создано другой системы. Теперь убедитесь, какой метод они используют.
  • Я попытался преобразовать изображение в RGB, как предлагается здесь текст ссылки но он терпит неудачу с "Не файл JPEG: начинается с 0x4d 0x4d".
  • Расширение изображения .jpg, но Windows говорит о своем формате JPEG? Эта запутан.

Может кто-нибудь помочь с этим? Я новичок в этом, не знаю, как это исправить.

Хорошо, я только что понял, что ImageIO.getImageReaders(поток) возвращает пустой Итератор. Это означает, что он не может найти подходящего читателя? Как я должен читать этот образ?

4b9b3361

Ответ 1

Хорошо, так как я переключил ноутбуки, я посмотрел на свой старый ноутбук и нашел этот JAR jai-imageio.jar в jre/ext/lib (я знаю плохую идею). Я переместил его в свой проект /lib, и это сработало! Я думаю, что этот jai-imageio.jar содержит дополнительные устройства для чтения изображений.

Ответ 2

Из Javadocs для ImageIO.read()

Возвращает a BufferedImage в результате декодирование прилагаемого файла с ImageReader выбирается автоматически из числа зарегистрированных в настоящее время. File завернут в ImageInputStream. Если не зарегистрировано ImageReader утверждает, что может прочитайте полученный поток, nullвернулся.

Попробуйте создать ImageInputStream, а затем передайте этот метод ImageIO.read() вместо отправки самого файла.

Ответ 3

Ужасно, у меня была та же проблема, в которой он поддерживал 24 формата изображения в eclipse, но поддерживал только 12 форматов изображений в командной строке с помощью maven. Как только я поместил jai_imageio.jar в тестовый путь maven, maven начал поддерживать 24 формата изображений.