原文首发http://blog.lll0.net/post/bitmap_white.html
在开发如果遇到需要把图片的白色部分转换成透明,可以采用一下方法进行转换。
原理,通过遍历图片上每一个点,得到每个点的ARGB值,通过这个点的RGB的值就可以确定该点的颜色,(255,255,255)白色,(0,0,0)黑色.通过判断颜色设置A的值,(a=0表示完全透明,a=255 表示不透明)。
//把白色转换成透明
public static Bitmap getImageToChange(Bitmap mBitmap) {
Bitmap createBitmap = Bitmap.createBitmap(mBitmap.getWidth(), mBitmap.getHeight(), Config.ARGB_8888);
if (mBitmap != null) {
int mWidth = mBitmap.getWidth();
int mHeight = mBitmap.getHeight();
for (int i = 0; i < mHeight; i++) {
for (int j = 0; j < mWidth; j++) {
int color = mBitmap.getPixel(j, i);
int g = Color.green(color);
int r = Color.red(color);
int b = Color.blue(color);
int a = Color.alpha(color);
if(g>=250&&r>=250&&b>=250){
a = 0;
}
color = Color.argb(a, r, g, b);
createBitmap.setPixel(j, i, color);
}
}
}
return createBitmap;
}
>
//把透明转换成白色
public static Bitmap getImage(Bitmap mBitmap) {
if (mBitmap != null) {
int mWidth = mBitmap.getWidth();
int mHeight = mBitmap.getHeight();
for (int i = 0; i < mHeight; i++) {
for (int j = 0; j < mWidth; j++) {
int color = mBitmap.getPixel(j, i);
int g = Color.green(color);
int r = Color.red(color);
int b = Color.blue(color);
int a = Color.alpha(color);
if (a == 0) {
a = 255;
g = 255;
r = 255;
b = 255;
}
color = Color.argb(a, b, g, r);
mBitmap.setPixel(j, i, color);
}
}
}
return mBitmap;
}