首先来看看如何读取一个像素的RGB值。读取一个像素点的RGB值的代码如下:
index = row * width + col; ta = (pixels[index] >> 24) & 0xff; tr = (pixels[index] >> 16) & 0xff; tg = (pixels[index] >> 8) & 0xff; tb = pixels[index] & 0xff;
其中index表示该像素点位置,row表示纵坐标位置,col表示横坐标位置。图像左上角的像素点对应位置坐标为(0,0),右下角的位置坐标为(height-1, width-1),这里的height又表示图像的高度,width表示图像的宽度。
设置一个像素点的RGB值的代码如下:
index = row * width + col; pixels[index] = (ta << 24) | (tr << 16) | (tg << 8) | tb;
其中ta表示透明度的值、tr表示RED通道值、tg表示GREEN通道值、tb表示BLUE通道值,它们的取值范围为[0~255]。
当创建的BufferedImage对象为ARGB类型,使用ImageIO保存为JPG格式时,你可能会发现图像与在Swing UI中显示的不一样,色差很大,原因在于ARGB类型与JPG格式不是很兼容,选择ARGB时最好保存为PNG格式,而RGB格式保存为JPG格式。