ImageIO.createImageInputStream возвращает значение NULL, как получилось? - PullRequest
4 голосов
/ 12 мая 2011

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

File f = new File(filepath);
applicantImage=new ImageDetail(filepath);

Iterator<ImageReader> readers =
     ImageIO.getImageReadersBySuffix(applicantImage.getFile_extension());
ImageReader reader = readers.next();

ImageInputStream iis = ImageIO.createImageInputStream(f);

filepath - это абсолютный путь к файлу изображения, и подтверждается, что изображение находится в этом месте на сервере.Все работает все отлично и денди, пока не дойдет до ImageIO.createImageInputStream(f).Сейчас возвращается null.Я прочитал Javadoc, что он принимает в файле.Так почему же сейчас возвращается null?Кто-нибудь знает?Ни один из приведенных выше кодов не был изменен в моем редактировании, поэтому я не понимаю, почему это работало до изменения и почему не работает сейчас.Любая помощь высоко ценится!Спасибо!

Ответы [ 2 ]

5 голосов
/ 12 мая 2011

Попробуйте использовать InputStream, созданный с File.

ImageIO.createImageInputStream(new FileInputStream(f));

Вот соответствующий пример .

Приложение: Присмотревшись к ImageIO.createImageInputStream(), говорит , что File разрешено.Действительно, ваш оригинальный код работает на моей платформе (Mac OS X), что заставляет меня предположить, что результат null может быть свойственным реализации ImageInputStreamSpi вашей платформы.Для несуществующих File f,

ImageIO.createImageInputStream(f);

я получаю разумное исключение:

Exception in thread "main" java.lang.IllegalStateException: Input not set!
    at com.sun.imageio.plugins.gif.GIFImageReader.read(GIFImageReader.java:784)
    at javax.imageio.ImageReader.read(ImageReader.java:923)
    at cli.GifBounds.search(GifBounds.java:22)
    at cli.GifBounds.main(GifBounds.java:14)
0 голосов
/ 31 мая 2016

Вам нужно установить вход раньше:

reader.setInput(iis);
dimension = new Dimension(reader.getWidth(0), reader.getHeight(0));
System.out.print(dimension);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...