2013-01-05 8 views
7

過去に私の画像をすべて正常にロードしました。私はOpenGL ES 2.0を使用していますので、画像は2のべき乗である必要はありません。そうではない)。LibGDXは特定の画像をロードできません

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 

ここでは、この興味深い問題にするものだ

問題のコードはこれです。 thisファイルを読み込むことはできますが、thisをロードすることはできません。前者は、基本的に私が使いたいスクリーンショットを切り取ったものです。 私が提供した(動作しない)2番目のイメージはオリジナルです。それはsplashSprites.pngと呼ばれますが、私はそれをtest.pngに名前を変更して正しく参照してみましたが、それでも動作しないので、命名の問題ではないことは間違いありません。両方のファイルをtest1.pngとtest2.pngという名前のassetsまたはbinディレクトリにそれぞれ置くと、test1.pngをロードするように要求するとコードが動作しますが、test2.pngをロードするように要求しても、コードは動作しません。ファイルを間違った場所に置く。それらの2つは最も有望な候補者に見えましたが、私はそれらを排除しました。

最初のイメージなどを再エクスポートしたようなものを試しましたが、動作しませんでした(スクリーンショットを撮っていたものがありました。私の推測では、画像の1つにアルファと関係があるかもしれないということです(2つのアルファとは異なる唯一のアルファですので、他のアルファはありません)が、他の画像をロードすることはできませんでしたアルファを持っていたテクスチャ。私は本当に困っている。

ありがとうございます。

答えて

7

答えが見つかりました。明らかに、LibGDXは16ビットのpngをサポートしていません(これは正しいのですか?)OS Xでのプレビューを使用してスプライトシートを8ビットの深度に変換したので、問題は消えました。

P.T. LibGDXをアップグレードするためのアドバイスは、次のエラーメッセージが表示されるためです。

+0

私の2ペンス:imagemagickは出力ファイルとして "png8:name.png"を使用して8ビットフォーマットを強制する – njzk2

4

画像上でpngcrushを実行すると、より一般的なPNG形式に変換されます。

このスクリーンショットは、libGDXフォーラムのスクリーンショットコードで生成されていますか?私もそれを使用して、PNGの結果が膨大になることに問題があり、ロード/編集にも問題があると思います。とにかくpngcrushが私の問題を解決しました。

pngcheckツールでは、2つの画像の違いを特定できる場合があります。

libGDXソースで突っつい

、私はlibGDXイメージローダーに、この(11日前)最近の変更を参照してください。あなたが実行してみてくださいので、https://github.com/libgdx/libgdx/commit/4fac29aef94e3afafdd47d71e60faf256fa171b0 を(にIOExceptionが本当に何が悪かったのかについての詳細な情報を含めるべきであるように見えます) libGDXナイトリーズとの対決?

+0

ありがとうございました。私はpngcrushを試みたが、うまくいかなかった。しかし、(それはデフォルトで16ビットとしてエクスポートするので、手動で変更する必要があります)プレビューでしたが、私はImageMagickもこれに対応できると思います。その識別ツールによって、画像が8ビットか16ビットかを確認することもできました。 –

関連する問題