Java.ImageIO中没有与PNG流匹配的读取器

Java.ImageIO中没有与PNG流匹配的读取器,java,image,png,javax.imageio,Java,Image,Png,Javax.imageio,我正试图按照提出的解决方案,用java读取PNG文件的元数据 但是方法ImageIO.getImageReaders(inputStream)返回的是一个空的读卡器列表。 我通过ImageIO.read读取流并将结果图像呈现到屏幕上,从而确保流是正确的 这就是为什么我感到困惑:因为ImageIO.read返回一个有效的图像,我假设有一些ImageReader声称能够解释这个流。解释图像数据和图像元数据之间有区别吗 这个问题有什么提示甚至解决方法吗 非常感谢。我相信,如果需要一个ImageInpu

我正试图按照提出的解决方案,用java读取PNG文件的元数据

但是方法
ImageIO.getImageReaders(inputStream)
返回的是一个空的读卡器列表。 我通过
ImageIO.read
读取流并将结果图像呈现到屏幕上,从而确保流是正确的

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

这个问题有什么提示甚至解决方法吗

非常感谢。

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

无论如何,如果您已经知道您有一个PNG,为什么不使用
getImageReadersByFormatName(“PNG”)


顺便说一句:高度和宽度(以及颜色模型等)可以被视为“图像元数据”,因为它们不是像素值的一部分(这将是真实数据),但通常来说,它们被视为图像(本质)属性。图像元数据通常(并在中明确)被理解为额外的“错误”数据(如物理分辨率、时间戳),通常不需要访问图像数据。

inputStream是inputStream还是ImageInputStream?“元数据”指的是宽度和高度之类的东西?
inputStream
是一个
inputStream
(由获取)。我所说的“元数据”就是指这两个属性(高度和宽度)<代码>getImageReadersByFormatName(“png”)
由于我的实际目标应用程序,不适合在此使用。代码必须能够读取以不同(即不仅仅是png)格式编码的图像元数据。愚蠢的我:我未能正确更新代码。我在ImageInputStream的帮助下得到了一个读卡器,但使用了我以前的普通InputStream作为读卡器的输入。现在我修好了,它工作得很好!非常感谢你!!