我正在尝试使用以下代码分析像素
BufferedImage image;
try {
image = ImageIO.read(new File(fileName));
} catch (IOException e) {
e.printStackTrace();
return null;
}
final byte[] pixels = ((DataBufferByte)
image.getRaster().getDataBuffer()).getData();final int pixelLength = 4;
for (int pixel = 0, row = 0, col = 0; pixel < pixels.length; pixel += pixelLength) {
byte alpha = pixels[pixel];
byte blue = pixels[pixel + 1];
byte green = pixels[pixel + 2];
byte red = pixels[pixel + 3];
//analyze colors
col++;
if (col == width) {
col = 0;
row++;
}
}
我是最简单的例子,我有一个有两个像素的图像,一个有透明度,一个没有。
像素 1:透明的红色
HEX: FF0000, Alpha 140, (RGB: 255, 0, 0)
像素 2:没有透明度的绿松石色
HEX: 7FFFD8, Aplha 255, (RGB: 127, 255, 216)
上面的像素数组具有以下值:[-116, 0, 0, -1, -1, -40, -1, 127]
其中每个像素有四个字节,顺序为 a、b、g、r(我认为)。
所以我的问题是,我如何从上面的结果中得到我使用的 0-255 值:)