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$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
Вот что делает эту проблему интересной. Я могу загрузить этот файл, но я не могу загрузить этот. Первый - это просто обрезанный скриншот того, который я хочу использовать. Второе изображение, которое я предоставил (которое не работает), является оригиналом. Он называется splashSprites.png, но я попытался переименовать его в test.png и сослаться на него должным образом, но он все еще не работает, поэтому я знаю, что это определенно не проблема с именами или что-то в этом роде. Если я помещаю оба файла в каталог assets или bin с именами test1.png и test2.png соответственно, то код работает, если я прошу загрузить test1.png, а не если я прошу загрузить test2.png, так что я не Я также не могу поместить файлы в неправильное место. Эти двое казались наиболее вероятными кандидатами, но я исключил их.
Я пробовал другие вещи, такие как реэкспорт первого изображения и тому подобное, но это не сработало (что сработало, так это снятие скриншота, вот почему я здесь). Я предполагаю, что это может иметь какое-то отношение к альфе на одном из изображений (потому что это действительно единственное, что отличается от двух - у одного есть альфа, а у другого нет), но это маловероятно, так как я смог загрузить другое текстуры, которые имели альфа. Я действительно в тупике.
Заранее спасибо.
2 ответа
Я нашел ответ. Очевидно, что LibGDX не поддерживает 16-битные png-файлы (верно?), Потому что после преобразования моей таблицы спрайтов в 8-битную глубину с помощью Preview в OS X я обнаружил, что проблема исчезла.
Спасибо PT за совет обновить LibGDX, потому что вот так я получил следующее сообщение об ошибке:
Caused by: java.io.IOException: couldn't load pixmap 8bit only
Запустите pngcrush для изображения, чтобы получить более распространенный формат PNG.
Этот скриншот генерируется с помощью кода скриншота форума libGDX? Я также использовал это, и у меня были проблемы с огромными результирующими PNG, и я думаю, что у меня тоже были проблемы с загрузкой / редактированием. Тем не мение pngcrush
исправил проблему для меня.
Инструмент pngcheck может выделить то, что отличается между двумя вашими изображениями.
Взглянув на источник libGDX, я вижу недавнее (11 дней назад) изменение загрузчика изображений libGDX: https://github.com/libgdx/libgdx/commit/4fac29aef94e3afafdd47d71e60faf256fa171b0 (похоже, что исключение IOException должно включать больше информации о том, что действительно пошло не так), так что вы можете попробовать запустить против ночных libGDX?