没有读者可以在Java.ImageIO中匹配PNG-Stream

时间:2013-04-17 15:52:39

标签: java image png javax.imageio

我正在尝试按照建议的解决方案here阅读带有Java的PNG文件的元数据。

但方法ImageIO.getImageReaders(inputStream)正在返回一个空的读者列表。 我确保通过ImageIO.read读取流并将生成的图像渲染到屏幕上来确保流是正确的。

这就是为什么我感到困惑:因为ImageIO.read返回一个有效的图像,我假设有一些ImageReader声称能够解释这个流。解释图像数据和图像的元数据之间有区别吗?

此问题的任何提示甚至解决方案?

非常感谢。

1 个答案:

答案 0 :(得分:3)

我相信ImageIO.getImageReaders()需要ImageInputStream,您可以尝试使用createImageInputStreamInputStream创建一个ImageIO.read(InputStream)。我猜这就是getImageReadersByFormatName("png")在幕后做的事情。

无论如何,如果你已经知道你有PNG,为什么不使用{{1}}?

BTW:高度和宽度(以及颜色模型等)可以被视为“图像元数据”,因为它们不是像素值的一部分(这将是真实的数据) ),但用通常的说法,它们被视为图像(必要)属性。图像元数据通常(并且特定地在IIOMetadata中)被理解为附加的“错误的”数据(作为物理分辨率,时间戳),这通常是访问图像数据所不需要的。