【发布时间】:2011-11-01 08:21:21
【问题描述】:
我希望使用 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);
}
【问题讨论】: