/**
* bitmap中的透明色用白色替换
*
* @param bitmap
* @return
*/
public static Bitmap changeColor(Bitmap bitmap) {
if (bitmap ==
null) {
return null;
}
int w =
bitmap.getWidth();
int h =
bitmap.getHeight();
int[] colorArray =
new int[w *
h];
int n = 0
;
for (
int i = 0; i < h; i++
) {
for (
int j = 0; j < w; j++
) {
int color =
getMixtureWhite(bitmap.getPixel(j, i));
colorArray[n++] =
color;
}
}
return Bitmap.createBitmap(colorArray, w, h, Bitmap.Config.ARGB_8888);
}
/**
* 获取和白色混合颜色
*
* @return
*/
private static int getMixtureWhite(
int color) {
int alpha =
Color.alpha(color);
int red =
Color.red(color);
int green =
Color.green(color);
int blue =
Color.blue(color);
return Color.rgb(getSingleMixtureWhite(red, alpha), getSingleMixtureWhite
(green, alpha),
getSingleMixtureWhite(blue, alpha));
}
/**
* 获取单色的混合值
*
* @param color
* @param alpha
* @return
*/
private static int getSingleMixtureWhite(
int color,
int alpha) {
int newColor = color * alpha / 255 + 255 -
alpha;
return newColor > 255 ? 255
: newColor;
}
png图如果有透明度分享到微信会变成黑色的问题,用上面的changeColor函数转一下。把新的 bitmap传入微信,就不会黑了
转载于:https://www.cnblogs.com/jasonkent27/p/5113184.html