3

我正在尝试按照此处提出的解决方案使用 java 读取 PNG 文件的元数据。

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

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

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

非常感谢。

4

1 回答 1

5

我相信ImageIO.getImageReaders()需要一个ImageInputStream,您可以尝试InputStream使用createImageInputStream创建一个。我想这就是ImageIO.read(InputStream)引擎盖下的作用。

无论如何,如果你已经知道你有一个 PNG,为什么不使用getImageReadersByFormatName("png")呢?

顺便说一句:高度和宽度(以及颜色模型等)可以被视为“图像元数据”,因为它们不是像素值的一部分(这将是真实数据),但通常来说,它们被视为而不是作为图像(基本)属性。图像元数据通常(特别是在IIOMetadata中)被理解为通常不需要访问图像数据的附加“杂项”数据(如物理分辨率、时间戳)。

于 2013-04-17T20:48:39.977 回答