Android图像处理——熔铸效果
熔铸效果原理:
r = r * 127 / (g + b + 1);
g = g * 127 / (r + b + 1);
b = b * 127 / (r + g + 1);
代码:
/**
* 熔铸效果
* @param bitmap
* @return
*/
public static Bitmap handleCastingEffect(Bitmap bitmap) {
int width = bitmap.getWidth();
int height = bitmap.getHeight();
int color, a, r, g, b;
Bitmap bmp = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
int[] oldPx = new int[width * height];
int[] newPx = new int[width * height];
bitmap.getPixels(oldPx, 0, width, 0, 0, width, height);
for (int i = 0; i < oldPx.length; i++) {
color = oldPx[i];
a = Color.alpha(color);
r = Color.red(color);
g = Color.green(color);
b = Color.blue(color);
r = r * 127 / (g + b + 1);
g = g * 127 / (r + b + 1);
b = b * 127 / (r + g + 1);
if (r < 0) {
r = 0;
} else if (r > 255) {
r = 255;
}
if (g < 0) {
g = 0;
} else if (g > 255) {
g = 255;
}
if (b < 0) {
b = 0;
} else if (b > 255) {
b = 255;
}
newPx[i] = Color.argb(a, r, g, b);
}
bmp.setPixels(newPx, 0, width, 0, 0, width, height);
return bmp;
}
效果如下:
原图:
效果图: