Aru*_*run 12 java jpeg metadata image
我想使用Java代码从本地系统中的映像文件中获取元数据
在附图中,您可以看到我想从java代码中提取的所需数据.

我编写了下面的代码,似乎没有拉出"详细信息"选项卡中提到的数据.下面代码的输出是,这不是我想要的.
Started ..
Format name: javax_imageio_jpeg_image_1.0
Format name: javax_imageio_1.0
Run Code Online (Sandbox Code Playgroud)
请把你的想法告诉我.谢谢
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();
}
Run Code Online (Sandbox Code Playgroud)
Joã*_*lva 10
使用Java Core API 没有简单的方法.您必须解析图像的元数据树,并解释正确的EXIF标记.相反,您可以从具有EXIF解析功能的现有库中获取所需的代码,并在您的库中使用它.例如,我使用了Image类javaxt,它提供了一种从图像中提取GPS元数据的非常有用的方法.它很简单:
javaxt.io.Image image = new javaxt.io.Image("D:\\codeTest\\arun.jpg");
double[] gps = image.getGPSCoordinate();
Run Code Online (Sandbox Code Playgroud)
另外,javaxt.io.Image没有外部依赖项,因此如果您不想在整个库中添加依赖项,则可以使用该特定类.