使用字节数组设置BufferedImage的像素颜色

时间:2017-04-14 20:50:04

标签: java bufferedimage bytebuffer

我已使用以下代码将图像转换为数组:

BufferedImage bufferedImage = null;       
try {
   bufferedImage = ImageIO.read(new File("name.jpeg"));
} catch (IOException e) { }

byte[] b = ((DataBufferByte) bufferedImage.getRaster().getDataBuffer()).getData();

该数组包含每个像素3个字节。我的问题是如何将单个像素设置为白色,因为问题是Java中的字节是有符号的,因此只允许-128到127之间的值。但我想将我的像素设置为255,255,255。如果我设置所有三个值到127的像素都变成灰色。

2 个答案:

答案 0 :(得分:2)

将值设置为-1,这是无符号255字节的signed representation

或者,如果您想让代码更加明显,(byte)255也会使代码更有效。

答案 1 :(得分:0)

你也可以使用内置ByteBuffer的Java来帮助管理这类东西。不确定你是否需要专门拥有一个byte[]数组,但它是你可以利用的酷对象。