0

我正在尝试访问位于正在运行的 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!作为错误给出。

这样做的正确方法是什么?

4

2 回答 2

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);
于 2013-05-20T16:55:37.010 回答
1

删除路径并尝试这样做

String image = "file://" + getClass().getResource("/res/sprites/" + pathRelativeToThis);
URL url = new URL(image);
BufferedImage img = ImageIO.read(url);
于 2013-05-20T16:55:47.437 回答