【发布时间】:2020-10-26 12:53:30
【问题描述】:
我正在尝试从 Java 中的 TIFF 图像中读取不同的标签值(如标签 259(压缩)、33432(版权)、306(日期时间)、315(艺术家)等)。谁能建议在 Java 11 中获取这些值的最佳方法是什么?
我尝试使用 tiffinfo 命令(如“tiffinfo -c myfile.tif”)获取这些值。但我没有在 tiffinfo (libtiff) 或任何 Java 库中找到任何特定命令,这些命令将为我提供 TIFF 图像的特定标记值(例如 DateTime)。
更新:
正如 haraldK 建议的那样,我尝试了 ImageIO,如下所示
try (ImageInputStream input = ImageIO.createImageInputStream(tiffFile)) {
ImageReader reader = ImageIO.getImageReaders(input).next(); // TODO: Handle reader not found
reader.setInput(input);
IIOMetadata metadata = reader.getImageMetadata(0);
TIFFDirectory ifd = TIFFDirectory.createFromMetadata(metadata);
TIFFField dateTime = ifd.getTIFFField(306);
String dateString = dateTime.getAsString(0);
}
但它没有给出标签的确切值。如果是非 ASCII 值(ö、ü、ä 等),问号会替换实际值。
谁能告诉我如何从 TIFFField 获取标签的准确值(包括非 ASCII)?
【问题讨论】:
标签: utf-8 tiff java-11 non-ascii-characters