繁体   English   中英

如何从InputStream中读取ImageIO:Java

[英]How to make ImageIO read from InputStream :Java

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

早些时候,为了获得路径,我使用了ClassName.class.getResource(/image/test.png).toURI();

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

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

但是如何从Inputstream读取ImageIO? 我尝试演员如下

InputStreamReader resourceBuff=ClassName.class.getResourceAsStream(/image/test.png);
ImageIO.read((ImageInputStream) new InputStreamReader(resourceBuff));

它抛出错误InputStreamReader无法强制转换为ImageInputStream

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

其次,您无法将InputStreamReader对象ImageInputStreamImageInputStream因为ImageInputStream与您想到的InputStreamReader无关。

此外, getResourceAsStream()返回InputStream 所以你可以直接这样做。

InputStream resourceBuff = YourClass.class.getResourceAsStream(filepath);
BufferedImage bf = ImageIO.read(resourceBuff);

ImageIO类有一个实用程序方法来读取 InputStream并创建BufferedImage

还有一种实用工具方法可以从InputStream 创建 ImageInputStream

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM