我正在尝试使用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树,但迭代整个树只是为了找到我感兴趣的两个字段效率非常低。
有没有办法以有效的方式获得这些字段(散列表或类似的东西)?
答案 0 :(得分:0)
我使用sanselan(它现在被带入apache公共但尚未完成)来读取元数据。
ImageInfo image_info = Sanselan.getImageInfo(imageFile);
int bitDepth = image_info.getBitsPerPixel();
int colorType = image_info.getColorType();