如何使ImageIO从InputStream读取:Java
我已经创建了可执行的jar文件(使用Eclipse),有一组图像(.png)文件要嵌入到jar中。因此,我添加了一个源文件夹,其中包含项目中/images
文件夹中的所有图像。代码必须访问这些文件才能使用ImageIO.read(new File(path);
创建BuffereImage
早些时候,
要获取路径,我使用了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
# 1 楼答案
^{} 将
InputStream
作为参数,因此将其强制转换为ImageInputStream
没有任何意义其次,您不能将} ,因为
InputStreamReader
对象强制转换为^{ImageInputStream
与您想到的InputStreamReader
无关此外^{} 返回
InputStream
。所以你可以直接这样做# 2 楼答案
ImageIO
类有一个实用方法来read一个InputStream
并创建一个BufferedImage
还有一种实用方法可以从
InputStream
中create和ImageInputStream