使用javax.imageio有效地读取特定图像MetaData

时间:2011-07-18 14:57:58

标签: java metadata javax.imageio

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

现在我正在使用:

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

但在此之后我被困住了。看来读取MetaData的唯一方法是使用md.getAsTree将其转换为XML树,但迭代整个树只是为了找到我感兴趣的两个字段效率非常低。

有没有办法以有效的方式获得这些字段(散列表或类似的东西)?

1 个答案:

答案 0 :(得分:0)

我使用sanselan(它现在被带入apache公共但尚未完成)来读取元数据。

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