0

J2MEでこれを試しました

try {
    Image immutableThumb = Image.createImage( temp, 0, temp.length);
} catch (Exception ex) {
    System.out.println(ex);
}

このエラーが発生しました: java.lang.IllegalArgumentException:

これを解決するにはどうすればよいですか?

4

4 に答える 4

1

ドキュメントを見てみましょう: IllegalArgumentException がスローされます

imageData が正しくフォーマットされていないか、デコードできない場合

そのため、考えられる理由は、サポートされていない画像形式か、データが切り捨てられた可能性があります。すべてのヘッダーを含むファイル全体をそのメソッドに渡す必要があることに注意してください。形式に疑問がある場合は、PNGを選択することをお勧めします。いずれにせよサポートされている必要があります。

于 2008-12-13T11:40:09.937 に答える
1

Image.createImage() は、最初の引数の形式が正しくないか、デコードできない場合、IllegalArgumentException をスローします。(temp は byte[] であると想定しています)。

http://java.sun.com/javame/reference/apis/jsr118/javax/microedition/lcdui/Image.html#createImage(byte[],%20int,%20int)

(このURLはなぜかハイパーリンクになっていません(?))

于 2008-11-07T10:11:37.490 に答える
1

詳細や周囲のコードがなければなんとも言えませんが、最初に疑ったのは、読み込もうとしているファイルがデバイスでサポートされていない形式であるということです。

于 2008-11-07T11:11:47.447 に答える
0

MIDLETでも同じ問題が発生しました。私の場合の問題は、ソケットのInputStreamから読み取ったJPEG画像に付随するHTTPヘッダーでした。そして、2バイトで識別されるJPEG SOIマーカーを見つけることでそれを解決しました:FFD8私のバイト配列で。次に、バイト配列での場所を見つけたらFFD8、HTTPヘッダーを表す開始バイトをトリミングし、createImage()例外をスローせずに呼び出すことができます...

これが当てはまるかどうかを確認する必要があります。これが正しいかどうかを確認してください。そう(temp[0] == 0xFF && temp[1] == 0xD8)でない場合は、の先頭をトリミングして、tempHTTPヘッダーまたはその他のジャンクを削除してください...

PS JPEG画像を読んでいると思いますが、そうでない場合は、temp配列内の適切なヘッダーを探してください。

また、これが役に立たず、JPEG画像を読んでいる場合は、配列が(EOIマーカーである)で始まり、FFD8で終わることを確認してください。FFD9そして、それがEOIで終わらない場合は、SOIで説明したように端をトリミングするだけです...

PPS また、入力されたデータtempが有効であることがわかった場合、プラットフォームはJPEG画像をデコードできないか、入力された画像がtempJPEGデコーダーに対して大きすぎます。

于 2010-03-17T10:57:57.443 に答える