gpt4 book ai didi

java - 在java中如何从图像中提取相机相关信息?

转载 作者:搜寻专家 更新时间:2023-10-31 19:35:08 25 4
gpt4 key购买 nike

我正在寻找使用 Java 从 jpg 中提取相机相关信息。我环顾四周,但未能找到解决问题的方法。我正在我的 mac (OS X 10.7) 上从 Aperture 导出我的照片,并想使用文件信息中可用的 Aperture 数据。

有什么想法吗?

我希望从这样的照片中提取维度和关键词:80.167.88.49/masters/test.html。目前我在尝试使用元数据提取器时遇到异常。我不知道 Aperture 是否正在添加无法处理的信息,但它会在 Aperture 的所有照片上引发异常。

Exception in thread "main" java.lang.NoClassDefFoundError: com/adobe/xmp/XMPException
at com.drew.imaging.jpeg.JpegMetadataReader.extractMetadataFromJpegSegmentReader(Unknown Source)
at com.drew.imaging.jpeg.JpegMetadataReader.readMetadata(Unknown Source)
at com.drew.imaging.ImageMetadataReader.readMetadata(Unknown Source)
at com.drew.imaging.ImageMetadataReader.readMetadata(Unknown Source)
at ImageScaler.main(ImageScaler.java:141)
Caused by: java.lang.ClassNotFoundException: com.adobe.xmp.XMPException
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
... 5 more

代码:

public static void main (String[] args){

File image = new File("/Users/peterla/Desktop/P8214462.jpg");

Metadata metadata = null;
try {
metadata = ImageMetadataReader.readMetadata(image);
} catch (ImageProcessingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}

Directory directory;

// Keywords
directory = metadata.getDirectory(IptcDirectory.class);
String keywords[] = directory.getStringArray(IptcDirectory.TAG_KEYWORDS);

// Dimensions
directory = metadata.getDirectory(JpegDirectory.class);
String height = directory.getString(JpegDirectory.TAG_JPEG_IMAGE_HEIGHT);
String width = directory.getString(JpegDirectory.TAG_JPEG_IMAGE_WIDTH);
}

最佳答案

Metadata Extractor有一个简单的界面,可以从许多数字图像格式中读取多种类型的元数据。这包括 EXIF jpeg 图像中使用的元数据格式。该库具有良好的 Javadoc 风格 documentation .

库的主要入口点是 ImageMetadataReader对象。

Getting Started页面有一个很好的介绍,包括一个很好的示例,说明如何从 EXIF 格式元数据中获取特定标签的值。

更新:提取关键字和维度的示例

Directory directory;
// Keywords
directory = metadata.getDirectory(IptcDirectory.class);
String keywords[] = directory.getStringArray(IptcDirectory.TAG_KEYWORDS);

// Dimensions
directory = metadata.getDirectory(JpegDirectory.class);
String height = directory.getString(JpegDirectory.TAG_JPEG_IMAGE_HEIGHT);
String width = directory.getString(JpegDirectory.TAG_JPEG_IMAGE_WIDTH);

备选方案

备选方案包括内置 java ImageIO图书馆和Sanselan .

关于java - 在java中如何从图像中提取相机相关信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7151230/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com