【问题标题】:Loading an image from the Resource Folder从资源文件夹加载图像
【发布时间】:2013-03-12 01:12:07
【问题描述】:

我用来加载图像的代码是:

 ImageIO.read(SpriteSheet.class.getResource(path));

路径是资源的路径。但是IllegalArgumentException 会出错。我想知道可能是什么原因,并得出结论,应该将资源添加到与类相同的路径中。

是否可以从另一个文件夹加载图像,例如 bin 文件夹之外的 res 文件夹? (存放已编译类的文件夹)

编辑: 所以我搞砸了一些事情,并找到了解决方案。但现在我有另一个问题。这是我的代码

    File sheet = new File(SpriteSheet.class.getProtectionDomain().getCodeSource().getLocation().getPath());
URI uri = sheet.toURI();
    BufferedImage image = ImageIO.read(uri.toURL());

当我尝试运行它时,它给了我一个IIOException: Can't read Input File 这意味着我永远无法真正让它工作。我尝试通过将 URL 打印到控制台来进行调试,这就是 URL。 C:\Users\Amma\Abhijeet\Eclipse%20Workspace1\Test%20Game\bin %20 位于中间。这意味着该文件是并且永远不能被访问。无论如何我可以解决这个问题吗?

谢谢。

【问题讨论】:

标签: java


【解决方案1】:

Class.getResource 如果找不到资源或调用者没有足够的权限来获取资源,将返回 null。 如果ImageIO.read 的所有变体收到空输入,它们将抛出IllegalArgumentException

查看getResource 的文档,了解如何从给定的资源中构造绝对资源名称以及搜索资源的规则。

只要您有权限,您就可以从任何位置读取图像,ImageIO.read 方法接受文件、URL 或 InputStream,因此您有很多选择。

【讨论】:

  • 感谢您的帮助。我会试试看。
猜你喜欢
  • 2015-09-12
  • 1970-01-01
  • 2011-03-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-31
  • 2013-03-22
相关资源
最近更新 更多