次のコードでピクセルを分析しようとしています
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++;
}
}
Im の最も単純な例では、2 つのピクセルを含む画像があり、1 つは透過性があり、もう 1 つは透過性がありません。
ピクセル 1: 透明度のある赤
HEX: FF0000, Alpha 140, (RGB: 255, 0, 0)
Pixel 2: 透明度のないターコイズ
HEX: 7FFFD8, Aplha 255, (RGB: 127, 255, 216)
上記のピクセル配列には次の値があります[-116, 0, 0, -1, -1, -40, -1, 127]
。各ピクセルには、a、b、g、r の順序で 4 バイトがあります (私はそう思います)。
だから私の質問は、上記の結果から、私が使用した0〜255の値を取得するにはどうすればよいですか:)