2

我正在使用此代码使用 apache commons.imaging(快照)获取这三个不同的元数据属性(“对象名称”、“图像描述”和“关键字”)。但是,我不知道如何写入这个属性。有人知道正确的方法吗?提前致谢...

IImageMetadata metadata = null;
String name;

try {
   metadata = Imaging.getMetadata(new File(filename));
} catch (ImageReadException | IOException e) {
}

if (metadata instanceof JpegImageMetadata) {
   final JpegImageMetadata jpegMetadata = (JpegImageMetadata) metadata;
   final List<IImageMetadataItem> items = jpegMetadata.getItems();

   for (int i = 0; i < items.size(); i++) {
      final IImageMetadataItem item = items.get(i);
      name = item.toString().substring(0, item.toString().indexOf(":"));
      switch (name) {
      case "Object Name" :
      case "ImageDescription" :
      case "Keywords" :
         System.out.println(item.toString());
         break;
      }
   }
}
4

1 回答 1

4

apache.commons.imaging的格式概览页面显示不支持 IPTC 元数据写入,但支持 EXIF 元数据写入。对于 EXIF 元数据的编写,我还搜索了一个示例。所以你必须做的是类似的事情:

final TiffImageMetadata exif = jpegMetadata.getExif();
TiffOutputSet outputSet = exif.getOutputSet();

然后添加或删除并添加(=更新)标签,最后:

new ExifRewriter().updateExifMetadataLossless(jpegImageFile, os, outputSet);

使用 jpegImageFile 一个文件(输入)和 os 一个输出流到输出文件。

于 2013-10-08T12:20:18.870 回答