Android LibGDX可以';不要加载特定的图像

Android LibGDX可以';不要加载特定的图像,android,file-io,libgdx,filenotfoundexception,pixmap,Android,File Io,Libgdx,Filenotfoundexception,Pixmap,我在过去成功地加载了我的所有图像,并且我使用的是OpenGL ES 2.0,因此图像不需要二次幂(我有几个图像加载成功,但没有) 有关守则如下: Line 96: splashSheet = new Texture(Gdx.files.internal("test.png")); 这是我的错误消息: Exception in thread "LWJGL Application" com.badlogic.gdx.utils.GdxRuntimeException: com.badlog

我在过去成功地加载了我的所有图像,并且我使用的是OpenGL ES 2.0,因此图像不需要二次幂(我有几个图像加载成功,但没有)

有关守则如下:

Line 96: splashSheet = new Texture(Gdx.files.internal("test.png"));
这是我的错误消息:

    Exception in thread "LWJGL Application" com.badlogic.gdx.utils.GdxRuntimeException: com.badlogic.gdx.utils.GdxRuntimeException: Couldn't load file: test.png
    at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:111)
Caused by: com.badlogic.gdx.utils.GdxRuntimeException: Couldn't load file: test.png
    at com.badlogic.gdx.graphics.Pixmap.<init>(Pixmap.java:140)
    at com.badlogic.gdx.graphics.glutils.FileTextureData.prepare(FileTextureData.java:64)
    at com.badlogic.gdx.graphics.Texture.load(Texture.java:175)
    at com.badlogic.gdx.graphics.Texture.create(Texture.java:159)
    at com.badlogic.gdx.graphics.Texture.<init>(Texture.java:133)
    at com.badlogic.gdx.graphics.Texture.<init>(Texture.java:122)
    at com.panini.game.GameScreen.show(GameScreen.java:96)
    at com.badlogic.gdx.Game.setScreen(Game.java:59)
    at com.panini.game.Splash.render(Splash.java:29)
    at com.badlogic.gdx.Game.render(Game.java:46)
    at com.badlogic.gdx.backends.lwjgl.LwjglApplication.mainLoop(LwjglApplication.java:190)
    at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:108)
Caused by: java.io.IOException: couldn't load pixmap
    at com.badlogic.gdx.graphics.g2d.Gdx2DPixmap.<init>(Gdx2DPixmap.java:57)
    at com.badlogic.gdx.graphics.Pixmap.<init>(Pixmap.java:138)
    ... 11 more
Caused by: java.io.IOException: couldn't load pixmap 8bit only
线程“LWJGL应用程序”com.badlogic.gdx.utils.GdxRuntimeException:com.badlogic.gdx.utils.GdxRuntimeException:无法加载文件:test.png 位于com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:111) 原因:com.badlogic.gdx.utils.GdxRuntimeException:无法加载文件:test.png 在com.badlogic.gdx.graphics.Pixmap.(Pixmap.java:140) 在com.badlogic.gdx.graphics.glutils.FileTextureData.prepare(FileTextureData.java:64)上 位于com.badlogic.gdx.graphics.Texture.load(Texture.java:175) 位于com.badlogic.gdx.graphics.Texture.create(Texture.java:159) 位于com.badlogic.gdx.graphics.Texture.(Texture.java:133) 位于com.badlogic.gdx.graphics.Texture.(Texture.java:122) 在com.panini.game.GameScreen.show上(GameScreen.java:96) 在com.badlogic.gdx.Game.setScreen上(Game.java:59) 位于com.panini.game.Splash.render(Splash.java:29) 位于com.badlogic.gdx.Game.render(Game.java:46) 位于com.badlogic.gdx.backends.lwjgl.LwjglApplication.mainLoop(LwjglApplication.java:190) 位于com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:108) 原因:java.io.IOException:无法加载pixmap 位于com.badlogic.gdx.graphics.g2d.Gdx2DPixmap.(Gdx2DPixmap.java:57) 位于com.badlogic.gdx.graphics.Pixmap.(Pixmap.java:138) ... 还有11个 这就是为什么这是一个有趣的问题。我可以加载文件,但不能加载一个。前者基本上只是我想使用的截图的一个裁剪。 我提供的第二个图像(不起作用)是原始图像。它名为splashSprites.png,但我尝试将其重命名为test.png并正确引用它,但它仍然不起作用,所以我知道这绝对不是命名问题或其他问题。如果我将这两个文件分别放在名为test1.png和test2.png的assets或bin目录中,那么如果我请求加载test1.png,代码就可以工作,但是如果我请求加载test2.png,代码就不能工作,所以我也不是将文件放在错误的位置。这两个人似乎是最有可能的候选人,但我已经排除了他们的可能性

我尝试了其他的方法,比如重新导出第一张图片等等,但都没有成功(成功的方法是截图,这就是我来这里的原因)。我的猜测是,这可能与其中一幅图像中的alpha有关(因为这是与两幅图像唯一不同的地方——一幅有alpha,另一幅没有alpha),但这不太可能,因为我能够加载其他一些确实有alpha的纹理。我真的被难住了

提前感谢。

在图像上运行,将其转换为更常见的PNG格式

这个截图是用libGDX论坛的截图代码生成的吗?我也使用了它,并且产生的PNG非常巨大,我相信我在加载/编辑它们时也遇到了一些问题。无论如何,
pngcrush
为我解决了这个问题

该工具可能能够隔离您拥有的两个图像之间的差异

查看libGDX源代码,我看到libGDX映像加载程序最近(11天前)发生了以下变化:
(看起来IOException应该包含更多关于到底出了什么问题的信息),因此您可以尝试运行libGDX nightlies?

我找到了答案。显然,LibGDX不支持16位png(这是对的吗?),因为在使用osx上的Preview将spritesheet转换为8位深度后,我发现问题消失了

感谢p.T.提供升级LibGDX的建议,因为这就是我得到以下错误消息的原因:

    Exception in thread "LWJGL Application" com.badlogic.gdx.utils.GdxRuntimeException: com.badlogic.gdx.utils.GdxRuntimeException: Couldn't load file: test.png
    at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:111)
Caused by: com.badlogic.gdx.utils.GdxRuntimeException: Couldn't load file: test.png
    at com.badlogic.gdx.graphics.Pixmap.<init>(Pixmap.java:140)
    at com.badlogic.gdx.graphics.glutils.FileTextureData.prepare(FileTextureData.java:64)
    at com.badlogic.gdx.graphics.Texture.load(Texture.java:175)
    at com.badlogic.gdx.graphics.Texture.create(Texture.java:159)
    at com.badlogic.gdx.graphics.Texture.<init>(Texture.java:133)
    at com.badlogic.gdx.graphics.Texture.<init>(Texture.java:122)
    at com.panini.game.GameScreen.show(GameScreen.java:96)
    at com.badlogic.gdx.Game.setScreen(Game.java:59)
    at com.panini.game.Splash.render(Splash.java:29)
    at com.badlogic.gdx.Game.render(Game.java:46)
    at com.badlogic.gdx.backends.lwjgl.LwjglApplication.mainLoop(LwjglApplication.java:190)
    at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:108)
Caused by: java.io.IOException: couldn't load pixmap
    at com.badlogic.gdx.graphics.g2d.Gdx2DPixmap.<init>(Gdx2DPixmap.java:57)
    at com.badlogic.gdx.graphics.Pixmap.<init>(Pixmap.java:138)
    ... 11 more
Caused by: java.io.IOException: couldn't load pixmap 8bit only

谢谢我试过pngcrush,但没用。预览确实如此(默认情况下它导出为16位,因此您必须手动更改),但我认为ImageMagick也能够做到这一点。它的识别工具还允许我查看图像是8位还是16位。我的2便士:with imagemagick使用“png8:name.png”作为输出文件,强制使用8位格式