こんにちは私の4ビットデータバッファをWritableRasterに変換する際に問題があります。 画像解像度:1024x768(786432)4ビットデータバッファのBufferedImage
ここに私がしていることが記載されています。
1))4ビットのBufferedImage
bit4Image = new BufferedImage(width, height, BufferedImage.TYPE_BYTE_BINARY, MY_BIT_4_COLOR_MODEL);
Graphics graphics = bit4Image.getGraphics();
graphics.drawImage(originalImage, 0, 0, null);
graphics.dispose();
//4-bit BufferedImage created. 4-bit BufferedImage is properly made cause it can be saved to hdd and looks good
2を作成し
byte[] pixelData = ((DataBufferByte) bit4Image.getRaster().getDataBuffer()).getData();
// pixelData length is 393216
3)今、私はピクセルデータ
このバイト配列からBufferedImageを作成したい4ビットからのDataBufferからバイト配列を取得します。BufferedImage dest = new BufferedImage(width, height, BufferedImage.TYPE_BYTE_BINARY, MY_BIT_4_COLOR_MODEL);
DataBufferByte buffer = new DataBufferByte(pixelData, pixelData.length);
WritableRaster raster = Raster.createInterleavedRaster(buffer, width, height, width, 1, new int[]{0}, new Point(0, 0));
dest.setData(raster);
Raster.createInterleavedRaster
に問題があります。例外: java.awt.image.RasterFormatException: Data array too small (should be > 786431)
私もこの
BufferedImage dest = new BufferedImage(width, height, BufferedImage.TYPE_BYTE_BINARY, MY_BIT_4_COLOR_MODEL);
dest.getRaster().setDataElements(0, 0, width, height, pixelData);
のようなものを試してみました。しかしこの1つは私に似て、障害を与える:
java.lang.ArrayIndexOutOfBoundsException: 393216
誰かが私にヒントを与えるか、適切に示すことができましたこの4ビットのpixelDataをWritableRasterに設定する方法は?
、[MCVE]または[ショート、自己完結、正しい例](http://www.sscce.org/)を投稿してください。 –