1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > Bitmap图片去除白色背景

Bitmap图片去除白色背景

时间:2024-05-28 13:00:24

相关推荐

Bitmap图片去除白色背景

需求

最近有个需求要合成证件照片,证件头像是白底的一寸照片,但是用bitmap合成的时候需要透明的头像照片,就需要将照片的白色背景变成透明色。有两种处理方式,推荐使用第一种.

第一种:bitmap是不可编辑的

不可编辑的bitmap意思是从文件或流中decode的。

Bitmap idPortraitTemp = BitmapFactory.decodeFile(portrait); int portraitWidth = idPortraitTemp.getWidth();int portraitHeight = idPortraitTemp.getHeight();int[] argbs = new int[portraitWidth * portraitHeight];idPortraitTemp.getPixels(argbs, 0, portraitWidth, 0, 0, portraitWidth, portraitHeight);// 获得图片的ARGB值for (int i = 0; i < argbs.length; i++) {int a = Color.alpha(argbs[i]);int r = Color.red(argbs[i]);int g = Color.green(argbs[i]);int b = Color.blue(argbs[i]);if (r > 240 && g > 240 && b > 240) {argbs[i] = 0x00FFFFFF;}}Bitmap idPortrait = Bitmap.createBitmap(argbs, 0, portraitWidth, portraitWidth, portraitHeight, Bitmap.Config.ARGB_4444);

第二种:bitmap是可编辑的

可编辑的意思是自己创建的bitmap,比如Bitmap.createBitmap

private static Bitmap dealBackground(Bitmap bm) {for (int i = 0; i < bm.getWidth(); i++) {for (int j = 0; j < bm.getHeight(); j++) {int color = bm.getPixel(i, j);int R = Color.red(color);int G = Color.green(color);int B = Color.blue(color);if (R > 240 && G > 240 && B > 240) {int newColor = Color.rgb(255, 255, 255);bm.setPixel(i, j, newColor);}}}return bm;}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。