我正在使用此代码使用apache commons.imaging(snapshot)获取这三个不同的元数据属性('Object Name','ImageDescription'和'Keywords')。但是,我不知道如何写入这个属性。有人知道正确的方法吗?提前谢谢......
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;
}
}
}
答案 0 :(得分:4)
apache.commons.imaging的format overview page表示不支持IPTC元数据写入,但EXIF元数据写入是。为了编写EXIF元数据,我也用Google搜索并找到example。所以你需要做的就是:
final TiffImageMetadata exif = jpegMetadata.getExif();
TiffOutputSet outputSet = exif.getOutputSet();
然后添加或删除并添加(=更新)标签,最后:
new ExifRewriter().updateExifMetadataLossless(jpegImageFile, os, outputSet);
使用jpegImageFile将文件(输入)和os输出文件作为输出文件。