19


有谁知道一些用于将 IPTC 元数据读取和写入JPEG 和 TIFF 的开源 Java 库?现在我正在使用 Apache Sanselan。不幸的是,它只能读取 IPTC,不能写入 (http://commons.apache.org/sanselan/formatsupport.html)。
将非常感谢您的帮助。
丹尼斯。

4

6 回答 6

5

这似乎是一个相当古老的问题,但以下是一些有用的信息:

可以使用 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 )

于 2014-07-22T11:42:36.017 回答
5

看看IIM4J。用于IIMWriter将 IPTC IIM 标签写入 (jpeg) 图像。

于 2011-10-31T13:12:37.710 回答
4

Apache Commons Imaging(以前称为 sanselan)在 svn 存储库代码中添加了对编写 IPTC 元数据的支持,以用于其下一个版本。我已经在从 svn repo 签出的最新中继代码中验证了这一点。代码看起来很稳定,所以我希望发布不会太远。对于我的项目,这已经足够好了。

于 2012-06-26T16:57:49.200 回答
1

我过去看过自己,但没有找到。我建议查看诸如http://sourceforge.net/projects/image-tagger/之类的开源项目,看看他们是如何做到的。

于 2010-10-05T20:41:02.963 回答
0

对于读取元数据,我认为您应该看看“元数据提取器”——一个开发用于从图像文件读取元数据的 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());
        }           
    }
}
于 2011-09-13T13:47:19.993 回答
0

Another library with detailed documentation: https://docs.groupdocs.com/display/metadatajava, compliant with IIMV4.2

于 2020-06-10T11:48:42.967 回答