如何使ImageIO从InputStream读取:Java

我已经创建了可执行的jar文件(使用Eclipse),在jar中包含一组图像(.png)文件。所以我添加了一个源文件夹,其中所有图像都位于/images项目的文件夹中。代码必须访问这些文件才能使用创建BufferedImageImageIO.read(new

File(path);

较早前,为了获得我使用的路径 ClassName.class.getResource(/image/test.png).toURI();

在执行jar时,它抛出错误 URI不是分层的

所以现在我正在使用 ClassName.class.getResourceAsStream(/image/test.png);

但是如何使ImageIO从Inputstream读取?我试过如下

InputStreamReader resourceBuff=ClassName.class.getResourceAsStream(/image/test.png);

ImageIO.read((ImageInputStream) new InputStreamReader(resourceBuff));

抛出错误 InputStreamReader无法转换为ImageInputStream

回答:

ImageIO.read()接受InputStream作为参数,因此没有将其强制转换为的含义ImageInputStream

其次,您不能将InputStreamReader对象投射到对象上,ImageInputStream因为ImageInputStreamInputStreamReader您所考虑的对象无关。

而且getResourceAsStream()回报InputStream。因此,您可以直接这样做。

InputStream resourceBuff = YourClass.class.getResourceAsStream(filepath);

BufferedImage bf = ImageIO.read(resourceBuff);

以上是 如何使ImageIO从InputStream读取:Java 的全部内容, 来源链接: utcz.com/qa/422062.html

回到顶部