2 回答

TA貢獻(xiàn)1827條經(jīng)驗(yàn) 獲得超4個(gè)贊
試試這個(gè)代碼
BufferedImage img = create3ByteRGBImage(int width, int height, new int[] {8, 8, 8},
new int[] {0, 1, 2});
private BufferedImage create3ByteRGBImage(width, height, int[] nBits, int[] bOffs) {
ColorSpace cs = ColorSpace.getInstance(ColorSpace.CS_sRGB);
ColorModel colorModel =
new ComponentColorModel(cs, nBits,
false, false,
Transparency.OPAQUE,
DataBuffer.TYPE_BYTE);
WritableRaster raster =
Raster.createInterleavedRaster(DataBuffer.TYPE_BYTE,
width, height,
width*3, 3,
bOffs, null);
return new BufferedImage(colorModel, raster, false, null);
}

TA貢獻(xiàn)1824條經(jīng)驗(yàn) 獲得超8個(gè)贊
前面的答案有效,但可以簡(jiǎn)化以更具可讀性:
ColorSpace colorSpace = ColorSpace.getInstance(ColorSpace.CS_sRGB);
ColorModel model = new ComponentColorModel(
colorSpace,
false,
true,
Transparency.OPAQUE,
DataBuffer.TYPE_BYTE
);
WritableRaster raster = Raster.createInterleavedRaster(
DataBuffer.TYPE_BYTE,
width,
height,
3,
null
);
BufferedImage image = new BufferedImage(model, raster, true, null);
添加回答
舉報(bào)