如何使 ImageIO 从 InputStream 读取:Java [英] How to make ImageIO read from InputStream :Java
问题描述
我已经创建了可执行的 jar 文件(使用 Eclipse),有一组图像 (.png) 文件将被包含在 jar 中.所以我在项目的 /images
文件夹中添加了一个包含所有图像的源文件夹.代码必须访问这些文件以使用 ImageIO.read(new File(path);
早些时候,要获取我使用的路径 ClassName.class.getResource(/image/test.png).toURI();
在执行 jar 时,它抛出错误 URI is not hierarchy
所以现在我使用 ClassName.class.getResourceAsStream(/image/test.png);
但是如何让 ImageIO 从 Inputstream 读取?我尝试按如下方式转换
InputStreamReader resourceBuff=ClassName.class.getResourceAsStream(/image/test.png);ImageIO.read((ImageInputStream) new InputStreamReader(resourceBuff));
它抛出错误InputStreamReader cannot be cast to ImageInputStream
ImageIO.read()
以 InputStream
作为参数,所以没有强制转换的意义它到 ImageInputStream
.
其次,您不能将 InputStreamReader
对象强制转换为 ImageInputStream
因为ImageInputStream
和你想到的InputStreamReader
没有关系.>
此外getResourceAsStream()
返回 InputStream
.所以你可以直接这样做.
InputStream resourceBuff = YourClass.class.getResourceAsStream(filepath);BufferedImage bf = ImageIO.read(resourceBuff);
I have created executable jar file(using Eclipse) , there are a set of image (.png) files that is to be inculded in the jar. So I have added a source folder with all the images inside /images
folder in the project . Code has to access these file to create BufferedImage using ImageIO.read(new File(path);
Earlier,
To get the path I used ClassName.class.getResource(/image/test.png).toURI();
On executing jar , it throw error URI is not hierarchical
So now I am using ClassName.class.getResourceAsStream(/image/test.png);
But how to make ImageIO read from Inputstream ? I tried cast as follows
InputStreamReader resourceBuff=ClassName.class.getResourceAsStream(/image/test.png);
ImageIO.read((ImageInputStream) new InputStreamReader(resourceBuff));
It throws error InputStreamReader cannot be cast to ImageInputStream
ImageIO.read()
takes InputStream
as a parameter so there is no meaning of casting it to ImageInputStream
.
Secondly you can not cast an InputStreamReader
object to ImageInputStream
because ImageInputStream
has nothing to do with InputStreamReader
which you thought of.
Moreover getResourceAsStream()
returns InputStream
. So you can directly do it like this.
InputStream resourceBuff = YourClass.class.getResourceAsStream(filepath);
BufferedImage bf = ImageIO.read(resourceBuff);
这篇关于如何使 ImageIO 从 InputStream 读取:Java的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!