LibGDX не может загрузить определенное изображение

Я успешно загрузил все свои изображения в прошлом, и я использую 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.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.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

вот что делает эту интересную проблему. Я могу загрузить этой файл, но я не могу загрузить этой один. Первый в основном просто обрезанный скриншот той, которую я хочу использовать. Второе изображение, которое я предоставил (которое не работает), является оригинальным. Это называется splashSprites.png, но я попытался переименовать его для тестирования.png и ссылаться на него правильно, но он все еще не работает, поэтому я знаю, что это определенно не проблема именования или что-то еще. Если я помещу оба файла в каталог assets или bin с именем test1.png и test2.png соответственно, тогда код работает, если я прошу загрузить test1.png, но не если я попрошу загрузить test2.png, так что это не то, что я помещаю файлы неправильное место либо. Эти двое казались наиболее вероятными кандидатами, но я их исключил.

Я пробовал другие вещи, такие как реэкспорт первого изображения и тому подобное, но он никогда не работал (что действительно работало, снимал скриншот, поэтому я здесь). Я предполагаю, что это может иметь какое - то отношение к Альфе в одном из изображений (потому что это действительно единственное, что отличается от двух-у одного есть альфа, у другого нет), но это маловероятно, так как я смог загрузить какой-то другой текстуры, в которых была альфа. Я действительно в тупике.

спасибо заранее.

2 ответов


Я нашел ответ. По-видимому, LibGDX не поддерживает 16-битные pngs (это правильно?) потому что после преобразования моей spritesheet в 8-битную глубину с помощью Preview в OS X я обнаружил, что проблема исчезла.

спасибо P. T. за совет обновить LibGDX, потому что именно так я получил следующее сообщение об ошибке:

Caused by: java.io.IOException: couldn't load pixmap 8bit only

Run pngcrush на изображение, чтобы получить его в более распространенный формат PNG.

этот скриншот генерируется с помощью кода скриншота форума libGDX? Я тоже использовал это, и у меня были проблемы с получением PNGs, и я считаю, что у меня были некоторые проблемы с загрузкой/редактированием их. Во всяком случае pngcrush Исправлена проблема для меня.

на pngcheck может быть в состоянии определить различные между двумя изображениями, вы иметь.

тыкать в источнике и libGDX, я вижу это последние (11 дн. назад) изменения в загрузчик и libGDX: https://github.com/libgdx/libgdx/commit/4fac29aef94e3afafdd47d71e60faf256fa171b0 (похоже, что исключение IOException должно включать больше информации о том, что действительно пошло не так), поэтому вы можете попробовать работать с ночными клубами libGDX?