当前位置: 首页 > 知识库问答 >
问题:

输入==null,使用ImageIO。读[副本]

司空俊雄
2023-03-14

以下是我正在使用的代码:

/**
 * This method loads an image
 * 
 * @param path - path of the image
 * 
 * 
 */
public static BufferedImage loadImage(String path) {
    try {
        return ImageIO.read(ImageLoader.class.getClass().getResourceAsStream(path));
    } catch (IOException e) {
        e.printStackTrace();
        System.exit(1);
    }
    return null;
}

以下是错误:

异常在线程"Thread-2"java.lang.IllegalArgumentExc0019:输入==空!
在javax.imageio.ImageIO. read(未知来源)
在io.deadspace.graphics.ImageLoader.loadImage(ImageLoader.java:19)
在io.deadspace.graphics.asset.assets.EntityAssets.initEntityAsset(EntityAssets.java:15)
在io.deadspace.graphics.asset.ssets.init(ssets.java:37)
在io.deadspace.Game.init(Game.java:73)
在io.deadspace.Game.run(Game.java:127)
在java.lang.Thread.run(未知来源)

我最近重新做了我在游戏中加载图像的方式,以前效果很好,但是现在,它不再有效了。我已经尝试了getResources和getResourceAsStream。

以下是我如何加载图像的一些例子:

public void initEntityAssets() {
    sheet = new SpriteSheet(ImageLoader.loadImage("res/textures/sheet.png"));

    wood = sheet.crop(width, height, width, height);
    tree = sheet.crop(0, 0, width, height * 2);
    rock = sheet.crop(0, height * 2, width, height);
    rockDropItem = sheet.crop(1, height * 2, width, height);

}

public void initHotbarAssets() {
    sheet = new SpriteSheet(ImageLoader.loadImage("res/textures/sheet.png"));

    hotbar = sheet.crop(0, height * 4, width, height);
    hotbar_selected = sheet.crop(0, height * 5, width, height);
}

共有2个答案

西门嘉澍
2023-03-14

如果res位于项目结构的java文件夹内,则必须使用:

 ImageLoader.class.getClassLoader().getResourceAsStream(path)

原因如下:

getClass(). getClassLoader(). getResources()和getClass.getResources()之间的区别?

另一种替代使用getClassLoader()的解决方案是在路径中添加斜杠,以便开始在根路径中搜索。

/res/something

而不是res/某物

任伟
2023-03-14

您的路径应该是相对于类路径根的,因此它应该是

sheet = new SpriteSheet(ImageLoader.loadImage("/res/textures/sheet.png"));
 类似资料:
  • 问题内容: 这是我的第一篇文章,请问如果我做错了什么。直到我尝试从源包中读取图像,此代码才能正常运行。但是现在它无法读取任何图像。我究竟做错了什么?还是关于日食的事? 例外: 谢谢… 问题答案: 改变了,如果你使用的是Windows。 更跨平台的方法将替代 对于每对。 进一步了解File api文档 编辑 (对不起,我没有读过此行) 这段代码运行正常,直到我尝试从源包中读取图像 为了从jar包中获

  • 我试图调整图像大小,首先我把我的输入流到缓冲的图像,然后使用这个缓冲图来缩放它 但是台词: 没有给出任何异常,只是在bim中返回null。为什么ImageIO不能读取我的输入流。我用这个流把它写在一个图像上,它工作得很好,但是当ImageIO读取它时,它返回null。我读到的地方,我需要传递文件对象,但为什么有一个选项,然后。有人能帮帮我吗。

  • 问题内容: 我不知道为什么这不起作用,但是程序说它无法读取输入文件。顺便说一下,这也在Ubuntu中运行: 这是示例代码: 该目录也位于程序的bin文件夹和src文件夹中。 问题答案: 如果您改为从资源流中获取图像怎么办?例如,

  • 好的,我所有的类都在几个包中:Game/src/pack 1/Class.class 我想进入一个文件:游戏/分辨率/地形。巴布亚新几内亚 我该怎么做? 然后我得到这个错误:

  • 执行javax。图像IO。ImageIO是否读取PPM格式的图像(如原始比特P6)? 没有异常,但是。其他格式如png和jpg工作正常。 我有一个尴尬的解决方法,通过去掉标头并逐行扫描ppm文件。我假设JAVA JAI(现在是JDK的一部分)会开箱即用。 我错过什么了吗?

  • 我正在处理一个很大的json文件,该文件当前被编码为一个很长的行。 我的问题是-那显示了什么?我如何让它将json数据输出为PPRINT? 我编写的代码如下所示: