我需要重新着色位图,根据HashMap,其中键是源颜色,值是目标颜色。
我通过迭代像素来实现结果:
public void recolor(Bitmap origBitmap, Bitmap newBitmap, Map<Integer, Integer> colorReplace) {
for (x = 0; x < origBitmap.getWidth(); x++) {
for (y = 0; y < origBitmap.getHeight(); y++ {
newBitmap.setPixel(x, y, colorReplace.get(origBitmap.getPixel(x, y)));
}
}
}
看起来很完美,但即使在运行在超频i7 CPU上的仿真器上工作也很慢。在真实设备上工作非常慢,有时不稳定。
我搜索了一些方法,使它更快,更稳定。我认为它可以通过PorterDuffColorFilter或其他ColorFilter完成,但不了解如何。
感谢您的任何建议!