繁体   English   中英

用于将 IPTC 元数据读取和写入 JPEG 和 TIFF 的 Java 库

[英]Java library for reading and writing IPTC metadata to JPEG and TIFF


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

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

可以使用 Apache Commons Imaging(以前称为 Sanselan)或元数据提取器(by draw 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 )

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

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

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

另一个带有详细文档的库: https ://docs.groupdocs.com/display/metadatajava ,符合 IIMV4.2

对于读取元数据,我认为您应该查看“ metadata-extractor ”——一个开源项目(Apache 2.0 许可证),它开发了一个用于从图像文件中读取元数据的 Java 库。

目前,该项目可以访问以下图像元数据:

  • Exif
  • 国际贸易中心
  • 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());
        }           
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM