我正在尝试将图像读取为InputStream
. 但由于某种原因,我总是得到一个IllegalArugmentException
.
这是我的代码:
BufferedImage i = null;
i = ImageIO.read(getClass().getResourceAsStream("/res/graphics" + path));
我正在尝试将图像读取为InputStream
. 但由于某种原因,我总是得到一个IllegalArugmentException
.
这是我的代码:
BufferedImage i = null;
i = ImageIO.read(getClass().getResourceAsStream("/res/graphics" + path));
原因:
您的资源评估为null
,这就是异常的原因
抛出: IllegalArgumentException - 如果输入是
null
.
解决方案:
如果res/graphics/whatever
在根目录下的类路径中,那么它将返回不为空
基本上,同名的资源是不存在的。资源由类加载器以与具有名称的类相同的方式定位res.graphics.whatever
,当然还有更相关的任何东西。因此,只需使用相同的方法使类可访问,从而使该资源可访问。
似乎"/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);