BufferedImageのRasterについて質問があります。私は画像データのバイト配列を持っており、そのバイトデータを新しい画像データとして設定したい。私はすでに、道道のこれをやって見て下図ました:バイト配列でラスタデータを設定する
BufferedImage bImageFromConvert = new BufferedImage(dimWidth, dimHeight, BufferedImage.TYPE_BYTE_GRAY);
byte[] bufferHolder = ((DataBufferByte) bImageFromConvert.getRaster().getDataBuffer()).getData();
System.arraycopy(imageInByte, 0, bufferHolder, 0, bufferHolder.length);//imageInByte is my byte array
ImageIO.write(bImageFromConvert, "bmp", new File(
directory + fileName + "_Compressed.bmp"));
しかし、BMPへのデータの書き込み中に、最終的な結果が予想されたものではありません。私は数日間このプロジェクトで頭を悩ましていました。バイトデータを直接Rasterに入れて、違いがあるかどうか確認したいのです。この質問がちょっと混乱していたらごめんなさい、私の脳はコーディングの時間から少し揚げられています。私がそれをもっと明確にする方法があれば教えてください。
ありがとうございました!
EDIT:出力画像 clilck
EDIT2:サイドノートバイトは、出力画像におけるそのように繰り返しているように見える理由は、誰もが知っているのですか?上位ビットと下位ビットを分離するコードは、何も複製していないようです。
あなたが期待していた結果ではないものは何ですか? – CraigR8806
バイト配列 'imageInByte'を' bImageFromConvert'に適用しようとしていますか? – CraigR8806
@ CraigR8806私は、画像に積み重なった画像のバイトデータを書き込んでいます。意図した結果は、画像の上端に本当に "明るい"ミニ画像として表示され、下端の下位バイトはより暗いミニ画像。今は、上位バイトと下位バイトイメージが2回繰り返されているように見えます。複数のカラーチャンネルが原因だと思いますか?しかし、私はTYPE_BYTE_GRAYが私に符号なし8ビットのグレースケール画像を与えたと確信していました。なぜこの繰り返しが起こっているのか私は非常に混乱しています。私は自分のイメージ出力を添付して、私が何を意味するかを見ることができます。 – Sarah