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:在上面的代码中,我在做错了什么,它没有正确地看到我指向的图像?
是否'reader.getNumImages(真)'返回不同的值? – VGR
**返回值-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
@VGR不,它是 - 1。 –