我正在尝试访问位于正在运行的jar中的图像。
这是我的代码:
Image image = Toolkit.getDefaultToolkit().getImage(
getClass().getResource("/res/sprites/"));
上面的代码绝对正常。
我遇到的问题是将其转换为可供BufferedImage对象使用的可读字符串。
这是我的代码:(pathRelativeToThis是一个字符串)
Image path = Toolkit.getDefaultToolkit().getImage(
getClass().getResource("/res/sprites/" + pathRelativeToThis));
String image = "file://" + path.toString();
URL url = new URL(image);
BufferedImage img = ImageIO.read(url);
这不起作用,并将javax.imageio.IIOException: Can't get input stream from URL!
视为错误。
这样做的正确方法是什么?
答案 0 :(得分:2)
您可以这样做并直接使用流:
InputStream is = getClass().getResourceAsStream("/res/sprites/" + pathRelativeToThis);
BufferedImage img = ImageIO.read(is);
is.close();
您是否尝试过直接将资源URL传递给ImageIO?
URL url = getClass().getResource("/res/sprites/" + pathRelativeToThis)
BufferedImage img = ImageIO.read(url);
答案 1 :(得分:1)
删除路径并尝试执行此操作
String image = "file://" + getClass().getResource("/res/sprites/" + pathRelativeToThis);
URL url = new URL(image);
BufferedImage img = ImageIO.read(url);