0

我正在尝试将图像读取为InputStream. 但由于某种原因,我总是得到一个IllegalArugmentException.

这是我的代码:

BufferedImage i = null; 
i = ImageIO.read(getClass().getResourceAsStream("/res/graphics" + path));
4

3 回答 3

2

原因:

您的资源评估为null,这就是异常的原因

API文档

抛出: IllegalArgumentException - 如果输入是null.

解决方案:

如果res/graphics/whatever在根目录下的类路径中,那么它将返回不为空

于 2013-07-28T06:12:05.337 回答
0

基本上,同名的资源是不存在的。资源由类加载器以与具有名称的类相同的方式定位res.graphics.whatever,当然还有更相关的任何东西。因此,只需使用相同的方法使类可访问,从而使该资源可访问。

于 2013-07-28T06:11:50.210 回答
0

似乎"/res/graphics" + path没有评估到您想要的值。

下面是你如何使用BufferedImage

public File myImg = new File("someImage.png");
BufferedImage in = ImageIO.read(myImg); 
//Just an example
BufferedImage newImage = new BufferedImage(in.getWidth(), in.getHeight(), BufferedImage.TYPE_INT_ARGB);
于 2013-07-28T06:15:06.403 回答