使用javax.imageio高效读取特定图像元数据

4

我正在尝试使用javax.imageio读取PNG图像,然后提取位深度和颜色类型元数据。

目前我在使用以下代码:

Iterator<ImageReader> itr = ImageIO.getImageReaders(stream);
while(itr.hasNext())
{
    ImageReader reader = itr.next();
    reader.setInput(stream);
    IIOMetadata md = reader.getImageMetadata(0);
}

但是在这一点上,我遇到了困难。似乎读取元数据的唯一方法是使用 md.getAsTree 将其转换为 XML 树,但是仅为了查找我感兴趣的两个字段而遍历整个树似乎非常低效。
有没有一种以高效方式获取这些字段的方法(哈希表或类似物)?
1个回答

0

我使用sanselan(现在正在被引入到apache commons中,但这还没有完成)来读取元数据。

            ImageInfo image_info = Sanselan.getImageInfo(imageFile);
            int bitDepth = image_info.getBitsPerPixel();
            int colorType = image_info.getColorType();

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接