这是一个对图片二值化处理的方法,将彩色图转化为黑白图!
上代码:
/**
* 对图片进行二值化处理
*
* @param bm
* 原始图片
* @return 二值化处理后的图片
*/
public static Bitmap getBinaryzationBitmap(Bitmap bm) {
Bitmap bitmap = null;
// 获取图片的宽和高
int width = bm.getWidth();
int height = bm.getHeight();
// 创建二值化图像
bitmap = bm.copy(Config.ARGB_8888, true);
// 遍历原始图像像素,并进行二值化处理
for (int i = 0; i < width; i++) {
for (int j = 0; j < height; j++) {
// 得到当前的像素值
int pixel = bitmap.getPixel(i, j);
// 得到Alpha通道的值
int alpha = pixel & 0xFF000000;
// 得到Red的值
int red = (pixel & 0x00FF0000) >> 16;
// 得到Green的值
int green = (pixel & 0x0000FF00) >> 8;
// 得到Blue的值
int blue = pixel & 0x000000FF;
// 通过加权平均算法,计算出最佳像素值
int gray = (int) ((float) red * 0.3 + (float) green * 0.59 + (float) blue * 0.11);
// 对图像设置黑白图
if (gray <= 95) {
gray = 0;
} else {
gray = 255;
}
// 得到新的像素值
int newPiexl = alpha | (gray << 16) | (gray << 8) | gray;
// 赋予新图像的像素
bitmap.setPixel(i, j, newPiexl);
}
}
return bitmap;
}
这是效果图:
这是源码的地址,有需要的可以去下载: