【发布时间】:2014-07-17 02:16:52
【问题描述】:
我正在为 OCR 处理图像,我需要更改位图中一堆像素的颜色。有比 setPixel 和 getPixel 更快的方法吗?目前,我正在使用一种方法进行 for 循环,该方法检查输入与一堆 RGB 值并在匹配时返回 true。非常感谢!
Bitmap img = myImage.copy(Bitmap.Config.ARGB_8888, true);;
for (int w = 0; w < img.getWidth(); w++) {
for (int h = 0; h < img.getHeight(); h++) {
int value = img.getPixel(w, h);
if (filter(value)) {
img.setPixel(w, h, Color.rgb(0, 0, 0));
} else img.setPixel(w, h, Color.rgb(255, 255, 255));
}
}
【问题讨论】:
-
getPixels() 和 setPixels 将在一次调用中获取它们(并在一次调用中设置它们)。没有真正的方法可以避免循环遍历所有像素,但是将查找次数减少到 1 可能会加快速度。
-
Gabe,谢谢,速度提升非常大。从平均 3.4 秒到平均 169 毫秒
标签: java android performance