14

シンプルですね。使用する

ImageIO.read(new ByteArrayInputStream(bytes));

シワはこちら。何らかの理由で jpeg を bmp として検出しています。これは、呼び出したときに返される最初の ImageReader です。

ImageInputStream iis = ImageIO.createImageInputStream(new ByteArrayInputStream(bytes));
Iterator<ImageReader> readers=ImageIO.getImageReaders(iis);

これにより、イメージが破損します。ヘッダーのバイトを直接見て、さまざまな画像のバイトヘッダーの適切な参照を誰かが知っていることに失敗するのを除いて、Javaを介して伝える方法はありますか?

私がまだこれに取り組んでいることを皆さんに知らせるだけです。答えがある場合/いつでもお知らせします。これまでのご回答に感謝いたします。

4

3 に答える 3

3

しばらく ImageIO で遊んでおらず、これをテストしていませんが、このようなものが機能していることを思い出しているようです。(ファイルがビットマップではなくjpgであることを知っていると言うので、その情報を使用して適切なローダーを見つけます)。

String inFormat = "jpg";

Iterator inReaders = ImageIO.getImageReadersByFormatName(inFormat);

...

nextInReader.setInput( iis );
于 2009-07-31T14:42:59.143 に答える
1

リファレンスについては、ウィキペディアを参照してください。さまざまな形式のヘッダーがそこにあります。
http://en.wikipedia.org/wiki/Graphics_Interchange_Format
http://en.wikipedia.org/wiki/BMP_file_format
http://en.wikipedia.org/wiki/JPEG

于 2009-07-31T14:48:34.390 に答える
0

によって返されるのは BMP リーダーだけgetImageReaders()ですか? たぶん、あなたは複数を取得し、それに基づいて選択を行うことができます.

于 2009-07-31T14:49:51.423 に答える