我想使用java代码从本地系统中的图像文件中获取元数据
在所附的图片中,您可以看到我想从java代码中提取的所需数据。
我写了下面的代码,似乎没有拉数据中提到的“细节”选项卡。下面代码的输出是,这不是我要找的。
Started ..
Format name: javax_imageio_jpeg_image_1.0
Format name: javax_imageio_1.0
请告诉我你的想法。谢谢
try {
ImageInputStream inStream = ImageIO.createImageInputStream(new File("D:\\codeTest\\arun.jpg"));
Iterator<ImageReader> imgItr = ImageIO.getImageReaders(inStream);
while (imgItr.hasNext()) {
ImageReader reader = imgItr.next();
reader.setInput(inStream, true);
IIOMetadata metadata = reader.getImageMetadata(0);
String[] names = metadata.getMetadataFormatNames();
int length = names.length;
for (int i = 0; i < length; i++) {
System.out.println( "Format name: " + names[ i ] );
}
}
} catch (IOException e) {
e.printStackTrace();
}
3条答案
按热度按时间am46iovg1#
根据@dan-d答案,这是我的代码(kotlin)
jgzswidk2#
使用javacoreapi没有简单的方法。您必须解析图像的元数据树,并解释正确的exif标记。相反,您可以从具有exif解析功能的现有库中提取所需的代码,并在您的库中使用它。例如,我使用了
Image
等级javaxt
它为从图像中提取gps元数据提供了一种非常有用的方法。简单到:另外,
javaxt.io.Image
没有外部依赖项,因此如果不想在整个库中添加依赖项,可以只使用该特定类。cygmwpex3#
我建议您读取图像的exif头,然后解析标记以查找gps信息。在java中,有一个很好的库(称为元数据提取器)用于提取和解析exif头。请在此处查看此库的入门指南。
完成教程中的前两个步骤后,查找以开头的标记
[GPS]
([GPS] GPS Longitude
,[GPS] GPS Latitude
, ...).