我需要一种方法来调整位图的色调/坐标。到目前为止,我发现了这个
public static Bitmap colorize(Bitmap src, float hue, float saturationDelta, float valueDelta) {
Bitmap b = src.copy(Bitmap.Config.ARGB_8888, true);
for (int x = 0; x < b.getWidth(); x++) {
for (int y = 0; y < b.getHeight(); y++) {
int color = b.getPixel(x, y);
float[] hsv = new float[3];
Color.colorToHSV(color, hsv);
hsv[0] = hue;
hsv[1] += saturationDelta;
hsv[2] += valueDelta;
int newColor = Color.HSVToColor(Color.alpha(color), hsv);
b.setPixel(x, y, newColor);
}
}
return b;
}
但是在400x500位图上工作需要10秒钟。还有更快的方法吗?
谢谢! :)
答案 0 :(得分:2)
我上面发布的链接应该有助于调整色调。一般来说,上面代码太慢的原因是因为你在图像中为每个像素调用getPixel()
和setPixel()
。您应该使用getPixels()
和setPixels()
方法将所有像素作为数组获取,循环遍历该数组并进行修改,然后将修改后的数组一次性设置回位图。你会注意到速度的巨大提升。