我正在尝试按照此处提出的解决方案使用 java 读取 PNG 文件的元数据。
但是该方法ImageIO.getImageReaders(inputStream)
返回一个空的读者列表。ImageIO.read
我通过读取流并将生成的图像渲染到屏幕来确保流是正确的。
这就是我感到困惑的原因:因为ImageIO.read
返回一个有效的图像,我假设有一些ImageReader
声称能够解释这个流。解释图像数据和图像元数据之间有区别吗?
这个问题的任何提示甚至解决方案?
非常感谢。
我正在尝试按照此处提出的解决方案使用 java 读取 PNG 文件的元数据。
但是该方法ImageIO.getImageReaders(inputStream)
返回一个空的读者列表。ImageIO.read
我通过读取流并将生成的图像渲染到屏幕来确保流是正确的。
这就是我感到困惑的原因:因为ImageIO.read
返回一个有效的图像,我假设有一些ImageReader
声称能够解释这个流。解释图像数据和图像元数据之间有区别吗?
这个问题的任何提示甚至解决方案?
非常感谢。
我相信ImageIO.getImageReaders()需要一个ImageInputStream
,您可以尝试InputStream
使用createImageInputStream创建一个。我想这就是ImageIO.read(InputStream)
引擎盖下的作用。
无论如何,如果你已经知道你有一个 PNG,为什么不使用getImageReadersByFormatName("png")
呢?
顺便说一句:高度和宽度(以及颜色模型等)可以被视为“图像元数据”,因为它们不是像素值的一部分(这将是真实数据),但通常来说,它们被视为而不是作为图像(基本)属性。图像元数据通常(特别是在IIOMetadata中)被理解为通常不需要访问图像数据的附加“杂项”数据(如物理分辨率、时间戳)。