ImageIO和URL

时间:2012-07-01 16:23:32

标签: java url bufferedimage javax.imageio

使用ImageIO.read将图像加载到BufferedImage(示例中的图像)时遇到一些恼人的问题,因为图像名称中有空格;

image = ImageIO.read(new File(getClass().getResource("/Pictures/H ello.jpg").getPath()));

如果我将网址(?)“/ Pictures / H ello.jpg”重命名为“/Pictures/Hello.jpg”,将源图像重命名为Hello.jpg,则可以正常使用。

我尝试用其他问题上的%20替换空格,并替换''到'+'的替换字符。那么我做错了什么?编码会解决我的问题,我该怎么做?

谢谢,

3 个答案:

答案 0 :(得分:2)

以下可能有效。

image = ImageIO.read(getClass().getResourceAsStream("/Pictures/H ello.jpg"));

答案 1 :(得分:1)

java.net.URL path = getClass().getResource("/Pictures/H ello.jpg");
ImageIO.read(new File(path.toURI())); 

这有用吗?我认为应该。 URL将空格解码为%20,File构造函数应将其正确处理为URI

答案 2 :(得分:1)

如果你想这样,那么你需要解码网址:

image = ImageIO.read(new File(URLDecoder.decode(getClass().getResource("/Pictures/H ello.jpg").getPath(), "UTF-8")));

但是,如果我需要使用资源,我会使用重载方法I​​mageIO.read(URL)或ImageIO.read(InputStream):

image = ImageIO.read(getClass().getResource("/Pictures/H ello.jpg"));
image = ImageIO.read(getClass().getResourceAsStream("/Pictures/H ello.jpg"));

请参阅apidoc