2016-04-13 26 views
0

我一直在阅读SO和Oracle全天学习如何从.jpg图像中提取元数据(提取嵌入图像中的GPS数据)。我处于一个没有很多第三方库选项的环境中。Java ImageReader返回无图像

我偶然发现了的ImageIO,ImageReader的,组合的IIOMetadata但我有问题:

File file = new File("/home/djtorrey/Pictures/test.jpg"); 
    System.out.println(file.isFile()); 
    ImageInputStream iis = ImageIO.createImageInputStream(file); 

    Iterator readers = ImageIO.getImageReadersByFormatName("jpg"); 
    ImageReader reader = (ImageReader)readers.next(); 

    reader.setInput(iis,true); 
    int value = reader.getNumImages(false); 
    System.out.println(value); 

这是我现在测试代码。正如你所看到的,我正在创建一个指向图像的文件对象,验证它将它视为一个文件(它确实),然后基于该文件创建一个ImageInputStream。我已经通过将文件推入BufferedImage对象并从中读取数据来验证它没有损坏。

我抓取一个jpg的ImageReader,将ImageReader输入设置为ImageInputStream,然后检查它看到的图像数量。

我应该看到1代表我指向的一个图像,但它一直返回-1,表示没有图像。

BLUF:在上面的代码中,我在做错了什么,它没有正确地看到我指向的图像?

+1

是否'reader.getNumImages(真)'返回不同的值? – VGR

+1

**返回值-1仅表示需要进行搜索以确定流**中剩余图像的数量:[https://docs.oracle.com/javase/7/docs/api/javax/imageio /ImageReader.html#getNumImages(boolean)](https://docs.oracle.com/javase/7/docs/api/javax/imageio/ImageReader.html#getNumImages(boolean)) – Gilfoyle

+0

@VGR不,它是 - 1。 –

回答