我已经创建了可执行的jar文件(使用Eclipse),在jar中包含一组图像(.png)文件。因此,我在项目中的/images
文件夹中添加了带有所有图像的源文件夹。代码必须访问这些文件才能使用ImageIO.read(new File(path);
创建BufferedImage
早一点
要获取路径,我使用了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
,因为ImageInputStream
与您想到的InputStreamReader
无关。
而且 getResourceAsStream()
返回InputStream
。因此,您可以像这样直接进行操作。
InputStream resourceBuff = YourClass.class.getResourceAsStream(filepath);
BufferedImage bf = ImageIO.read(resourceBuff);