2

長さ128のバイト配列をBufferedImageに格納されている32x32ビットマップに変換しようとしています。私は次のコードを使用しています:

private BufferedImage fSP;

public Pattern( byte[] aBitData ) {
  if ( aBitData == null ) {
    throw new IllegalArgumentException( "Please provide a non-null byte array of length 128: " + aBitData );
  }
  else if ( aBitData.length != 128 ) {
    throw new IllegalArgumentException( "Please provide a non-null byte array of length 128: " + aBitData.length );
  }
  InputStream in = new ByteArrayInputStream( aBitData );
  try {
    fSP = ImageIO.read( in );
  } catch( IOException e ) {
    e.printStackTrace();
  }
}

ただし、何らかの理由でfSPがnullに設定されるたびに。なぜこれが起こるのかわかりません。誰か助けてもらえますか?

4

3 に答える 3

1

JavaDocから:

現在登録されているものの中から自動的に選択されたImageReaderを使用して、提供されたInputStreamをデコードした結果としてBufferedImageを返します。InputStreamはImageInputStreamにラップされています。登録されたImageReaderが結果のストリームを読み取ることができると主張していない場合、nullが返されます。

バイト配列の内容を既知の画像形式としてデコードできないように見えます。

于 2011-10-31T10:21:04.283 に答える
0

ビット配列で提供されるデータは、サポートされているファイル形式に対応していないと思われます。つまり、実装されているどのファイルでも読み取ることができますImageReader

于 2011-10-31T10:20:30.727 に答える
0

画像を表さないようにaBitDataを変更した場合、nullになる別の理由が考えられます。たとえば、画像データではなく画像ヘッダーバイトである最初のバイトを変更した場合です。

于 2012-12-16T10:27:28.557 に答える