我正在尝试按照建议的解决方案here阅读带有Java的PNG文件的元数据。
但方法ImageIO.getImageReaders(inputStream)
正在返回一个空的读者列表。
我确保通过ImageIO.read
读取流并将生成的图像渲染到屏幕上来确保流是正确的。
这就是为什么我感到困惑:因为ImageIO.read
返回一个有效的图像,我假设有一些ImageReader
声称能够解释这个流。解释图像数据和图像的元数据之间有区别吗?
此问题的任何提示甚至解决方案?
非常感谢。
答案 0 :(得分:3)
我相信ImageIO.getImageReaders()需要ImageInputStream
,您可以尝试使用createImageInputStream从InputStream
创建一个ImageIO.read(InputStream)
。我猜这就是getImageReadersByFormatName("png")
在幕后做的事情。
无论如何,如果你已经知道你有PNG,为什么不使用{{1}}?
BTW:高度和宽度(以及颜色模型等)可以被视为“图像元数据”,因为它们不是像素值的一部分(这将是真实的数据) ),但用通常的说法,它们被视为图像(必要)属性。图像元数据通常(并且特定地在IIOMetadata中)被理解为附加的“错误的”数据(作为物理分辨率,时间戳),这通常是访问图像数据所不需要的。