ImageIO and URLs


由于

图像名称中有空格,在使用 ImageIO.read 将图像加载到缓冲图像(示例中的图像)时遇到一些烦人的问题;

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

如果我重命名网址(?"/Pictures/H ello.jpg"到"/Pictures/Hello.jpg",源图像到Hello.jpg它工作得很好。

我尝试用 %20 替换空格,就像在其他问题上找到的那样,并将"替换为"+"。那我做错了什么呢?编码会解决我的问题吗,我将如何做到这一点?

谢谢

以下方法可能有效。

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

这行得通吗?我认为应该。URL 会将空间解码为 %20,构造函数File应将其正确处理为URI

如果你

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

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

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

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

见阿皮多克

最新更新