这是一个对图片二值化处理的方法,将彩色图转化为黑白图!
上代码:
/** * 对图片进行二值化处理 * * @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; }
这是效果图:
这是源码的地址,有需要的可以去下载: