Проблема с использованием 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(поток) возвращает пустой Итератор. Это означает, что он не может найти подходящего читателя? Как я должен читать этот образ?
Ответы
Ответ 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 формата изображений.