有谁知道一些用于将 IPTC 元数据读取和写入JPEG 和 TIFF 的开源 Java 库?现在我正在使用 Apache Sanselan。不幸的是,它只能读取 IPTC,不能写入 (http://commons.apache.org/sanselan/formatsupport.html)。
将非常感谢您的帮助。
丹尼斯。
6 回答
这似乎是一个相当古老的问题,但以下是一些有用的信息:
可以使用 Apache Commons Imaging(以前的 Sanselan)或 Metadata Extractor(由 draw noaks)来读取 EXIF、IPTC..etc 等元数据。
元数据的写入可以使用 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 )
看看IIM4J。用于IIMWriter
将 IPTC IIM 标签写入 (jpeg) 图像。
Apache Commons Imaging(以前称为 sanselan)在 svn 存储库代码中添加了对编写 IPTC 元数据的支持,以用于其下一个版本。我已经在从 svn repo 签出的最新中继代码中验证了这一点。代码看起来很稳定,所以我希望发布不会太远。对于我的项目,这已经足够好了。
我过去看过自己,但没有找到。我建议查看诸如http://sourceforge.net/projects/image-tagger/之类的开源项目,看看他们是如何做到的。
对于读取元数据,我认为您应该看看“元数据提取器”——一个开发用于从图像文件读取元数据的 Java 库的开源项目(Apache 2.0 许可证)。
目前,该项目可以访问以下图像元数据:
- Exif
- IPTC
- XMP
- JFIF / JFXX
- ICC 配置文件
- Photoshop 字段
“元数据提取器”托管在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());
}
}
}
Another library with detailed documentation: https://docs.groupdocs.com/display/metadatajava, compliant with IIMV4.2