Java ImageReader返回无图像

时间:2016-04-13 16:40:02

标签: java image-processing metadata

我一整天都在阅读SO和Oracle,以了解如何从.jpg图像中提取元数据(提取嵌入在图像中的GPS数据)。我处在一个我没有很多第三方库选项的环境中。

我偶然发现了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 个答案:

答案 0 :(得分:2)

返回值-1只表示需要进行搜索以确定流中剩余图像的数量:enter image description here