我在一个 int 数组(int[] 像素)中有一个图像(大小为 1024x1024),我正在使用以下循环反转一个通道......
int i = 0;
for (int y = 0; y < H; y++) {
for (int x = 0; x < W; x++) {
int color = pixels[i];
pixels[i] = Color.argb(Color.alpha(color), 255 - Color.red(color), Color.green(color), Color.blue(color));
i++;
}
}
在我的新 Galaxy S4 手机上,这需要超过 1 秒。即使在较旧的 iPhone 上,类似的循环也会在眨眼间运行。我在这里做错了什么吗?
如果我用“Color.BLUE”替换“Color.argb(Color.alpha(color), 255 - Color.red(color), Color.green(color), Color.blue(color))”,它会变得更快.
找到了解决方法。
如果我使用自己的位运算符而不是颜色函数,它会变得更快......
int i = 0;
for (int y = 0; y < H; y++) {
for (int x = 0; x < W; x++) {
int color = pixels[i];
int red = ((color & 0x00ff0000) >> 16);
pixels[i] = (color & 0xff00ffff) | ((255 - red) << 16);
//pixels[i] = Color.argb(Color.alpha(color), 255 - Color.red(color), Color.green(color), Color.blue(color));
i++;
}
}