有没有人知道一些用于阅读和将 IPTC元数据写入JPEG和TIFF的开源Java库?现在我正在使用Apache Sanselan。不幸的是,它只能读取IPTC,而不是写入( http://commons.apache.org/sanselan/formatsupport.html)。
非常感谢您的协助
丹尼斯。
答案 0 :(得分:5)
看看IIM4J。使用IIMWriter
将IPTC IIM标记写入(jpeg)图像。
答案 1 :(得分:4)
Apache Commons Imaging (formerly sanselan)增加了对svn repo代码中为其下一版本编写IPTC元数据的支持。我已经验证了从svn repo中检出的最新主干代码中的情况。代码似乎很稳定,所以我希望发布的版本不会太远。对于我的项目,这已经足够了。
答案 2 :(得分:4)
这似乎是一个相当古老的问题,但以下是一些有用的信息:
可以使用Apache Commons Imaging(以前的Sanselan)或元数据提取器(通过绘制noaks)来读取EXIF,IPTC等等元数据。
可以使用以下类使用Apache Commons Imaging完成元数据的编写:
EXIF - ExifRewriter(http://commons.apache.org/proper/commons-imaging/apidocs/org/apache/commons/imaging/formats/jpeg/exif/ExifRewriter.html)
IPTC - JpegIptcRewriter(http://commons.apache.org/proper/commons-imaging/apidocs/org/apache/commons/imaging/formats/jpeg/iptc/JpegIptcRewriter.html)
XMP - JpegXmpRewriter(http://commons.apache.org/proper/commons-imaging/apidocs/org/apache/commons/imaging/formats/jpeg/xmp/JpegXmpRewriter.html)
答案 3 :(得分:1)
我过去看过自己但没找到一个。我建议查看一个开源项目,例如http://sourceforge.net/projects/image-tagger/,看看他们是如何做到的。
答案 4 :(得分:0)
为了阅读元数据,我认为你应该看看“metadata-extractor” - 一个开源项目(Apache 2.0许可证),它开发了一个Java库,用于从图像文件中读取元数据。
目前,该项目可以访问以下图像元数据:
“metadata-extractor”位于google code。
以下是2.4.0版本的一个简单直接的代码示例:
public void example() throws Exception {
File jpegFile = new File("yourJpgFile.jpg");
Metadata metadata = ImageMetadataReader.readMetadata(jpegFile);
Iterator directory = metadata.getDirectoryIterator();
while (directory.hasNext()) {
Object tag = directory.next();
if (tag instanceof ExifDirectory) {
Iterator tags = ((ExifDirectory) tag).getTagIterator();
while (tags.hasNext()) {
System.out.println("EXIF: "+tags.next().toString());
}
} else if (tag instanceof IptcDirectory) {
Iterator tags = ((IptcDirectory) tag).getTagIterator();
while (tags.hasNext()) {
System.out.println("IPTC: "+tags.next().toString());
}
} else if (tag instanceof JpegDirectory) {
Iterator tags = ((JpegDirectory) tag).getTagIterator();
while (tags.hasNext()) {
System.out.println("JPEG: "+tags.next().toString());
}
} else {
System.err.println(tag.getClass());
}
}
}
答案 5 :(得分:0)
另一个具有详细文档的库:https://docs.groupdocs.com/display/metadatajava,符合IIMV4.2