我想交换一个像素的红色和蓝色值。应该执行此操作的方法接收作为 int 0xAARRGGBB 的像素,其中 AA 是 alpha 的十六进制值,颜色为 r、g、b,例如完全不透明的蓝色为 0xFF0000FF。
我将值转换为字符串,然后使用 substring() 将其剪切,以修改后的顺序将其拼接在一起并将结果转换回 int。这似乎不雅且不起作用:
public int filterRGB(int x, int y, int pixel) {
int filteredPixel;
String s, a, r, g, b, res;
s = Integer.toString(pixel);
a = s.substring(2,4);//alpha
r = s.substring(4,6);//r
g = s.substring(6,8);//g
b = s.substring(8,10);//b
res = "0x" + a + b + g + r;
filteredPixel = Integer.parseInt(res);
return filteredPixel;
它不起作用的原因似乎是 substring(8,10)。该行之后的代码不会被执行。它确实适用于 substring(8,9),但这会切断蓝调的第二个十六进制值。我不知道如何自己查找,所以,请有人解释一下吗?