Java ImageReader Returns 没有图像
Java ImageReader Returns No Images
我一整天都在阅读有关 SO 和 Oracle 的资料,以了解如何从 .jpg 图像中提取元数据(提取 am 图像中嵌入的 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:我在上面的代码中做错了什么,它没有正确看到我指向的图像?
return 值 -1 仅表示需要搜索以确定流中剩余图像的数量:ImageReader Javadoc
我一整天都在阅读有关 SO 和 Oracle 的资料,以了解如何从 .jpg 图像中提取元数据(提取 am 图像中嵌入的 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:我在上面的代码中做错了什么,它没有正确看到我指向的图像?
return 值 -1 仅表示需要搜索以确定流中剩余图像的数量:ImageReader Javadoc