2009-07-31 9 views
13

音が単純ですか?使用バイト配列をJavaの画像に変換する - タイプを知らずに

ImageIO.read(new ByteArrayInputStream(bytes)); 

ここにシワがあります。何らかの理由で、それは、BMP、JPEGなどを検出している、と私は

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

これは、破損した出てくる画像を起こし呼び出すときには、返された最初のImageReaderです。そこには、ヘッダーのバイトを直接調べることができないJavaを介して伝える方法はありますか?それは誰もが別の画像のバイトヘッダーの良い参照を知っていますか?

私はまだこれについて作業中です。私は答えがあるかどうかをあなたに知らせます。これまでのあなたの回答に対して、皆様に感謝します。

答えて

5

This pageマジックナンバーのための良い出発点かもしれません。 HereはWikipediaと同様のものです。

3

ImageIOでしばらくプレイしていないし、これをテストしていないのですが、このようなことを思い出すようです。 (あなたのファイルはjpgでビットマップではないと言っているので、正しいローダーを見つけるためにその情報を使用しています)。

String inFormat = "jpg"; 

Iterator inReaders = ImageIO.getImageReadersByFormatName(inFormat); 

... 

nextInReader.setInput(iis); 
+0

これは正しいですが、データ収集にはbmp、png、jpgなどが混在しているという問題があります。したがって、これらのいずれも有効である可能性があります。したがって、トリックはどれがバイトに基づいているかを伝えています。 – PHeath

0

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

関連する問題