让我们说我有一个像这样的图像(实际上,我有很多,但让我们保持简单) example picture并且我想用绿色替换背景颜色(那些不是道路的颜色)。
要做到这一点,我必须遍历地图中的所有像素,并替换与我想要删除的颜色相匹配的像素。
但是你可能会认为,我的图像并不像256x256图片那么简单,但它的图像略大,它的1440p,性能下降很明显。
如何在不迭代所有像素的情况下替换所有不需要的像素。
我正在使用Processing 3 - Java(Android),我目前正在使用这段代码:
for (x = 0; x < img.width; x++){
for (int y = 0; y < img.height; y++) {
//Color to transparent
int index = x + img.width * y;
if (img.pixels[index] == -1382175 || img.pixels[index] == 14605278 || img.pixels[index] == 16250871) {
img.pixels[index] = color(0, 0, 0, 0);
} else {
img.pixels[index] = color(map(bright, 0, 255, 64, 192));
}
}
}
答案 0 :(得分:0)
解决这个问题:
private PImage swapPixelColor(PImage img, int old, int now) {
old &= ~0x00000000;
now &= ~0x00000000;
img.loadPixels();
int p[] = img.pixels, i = p.length;
while (i-- != 0) if ((p[i]) == old) p[i] = now;
img.updatePixels();
return img;
}
它就像一个魅力,几乎没有时间:
Swapped colors in 140ms // That's replacing it three times(different colors ofc)