Android 去除 bitmap 无用的白色边框
来源:互联网 发布:薪酬优化 密件工资单 编辑:程序博客网 时间:2024/05/01 18:36
图示
如下图所示,本文所写的工具类是,去除内容区域以外的白色边框。
代码
import android.graphics.Bitmap;/** * Created by Victor Yang on 2016/6/17. * 去除 bitmap 无用的白色边框 */public class BitmapDeleteNoUseSpaceUtil { /** * 灰度化 bitmap * @param imgTheWidth * @param imgTheHeight * @param imgThePixels * @return */ private static Bitmap getGrayImg(int imgTheWidth, int imgTheHeight, int[] imgThePixels) { int alpha = 0xFF << 24; //设置透明度 for (int i = 0; i < imgTheHeight; i++) { for (int j = 0; j < imgTheWidth; j++) { int grey = imgThePixels[imgTheWidth * i + j]; int red = ((grey & 0x00FF0000) >> 16); //获取红色灰度值 int green = ((grey & 0x0000FF00) >> 8); //获取绿色灰度值 int blue = (grey & 0x000000FF); //获取蓝色灰度值 grey = (int) ((float) red * 0.3 + (float) green * 0.59 + (float) blue * 0.11); grey = alpha | (grey << 16) | (grey << 8) | grey; //添加透明度 imgThePixels[imgTheWidth * i + j] = grey; //更改像素色值 } } Bitmap result = Bitmap.createBitmap(imgTheWidth, imgTheHeight, Bitmap.Config.RGB_565); result.setPixels(imgThePixels, 0, imgTheWidth, 0, 0, imgTheWidth, imgTheHeight); return result; } /** * 去除多余白框 * @param originBitmap * @return */ public static Bitmap deleteNoUseWhiteSpace(Bitmap originBitmap) { int[] imgThePixels = new int[originBitmap.getWidth() * originBitmap.getHeight()]; originBitmap.getPixels( imgThePixels, 0, originBitmap.getWidth(), 0, 0, originBitmap.getWidth(), originBitmap.getHeight()); // 灰度化 bitmap Bitmap bitmap = getGrayImg( originBitmap.getWidth(), originBitmap.getHeight(), imgThePixels); int top = 0; // 上边框白色高度 int left = 0; // 左边框白色高度 int right = 0; // 右边框白色高度 int bottom = 0; // 底边框白色高度 for (int h = 0; h < bitmap.getHeight(); h++) { boolean holdBlackPix = false; for (int w = 0; w < bitmap.getWidth(); w++) { if (bitmap.getPixel(w, h) != -1) { // -1 是白色 holdBlackPix = true; // 如果不是-1 则是其他颜色 break; } } if (holdBlackPix) { break; } top++; } for (int w = 0; w < bitmap.getWidth(); w++) { boolean holdBlackPix = false; for (int h = 0; h < bitmap.getHeight(); h++) { if (bitmap.getPixel(w, h) != -1) { holdBlackPix = true; break; } } if (holdBlackPix) { break; } left++; } for (int w = bitmap.getWidth() - 1; w >= 0; w--) { boolean holdBlackPix = false; for (int h = 0; h < bitmap.getHeight(); h++) { if (bitmap.getPixel(w, h) != -1) { holdBlackPix = true; break; } } if (holdBlackPix) { break; } right++; } for (int h = bitmap.getHeight() - 1; h >= 0; h--) { boolean holdBlackPix = false; for (int w = 0; w < bitmap.getWidth(); w++) { if (bitmap.getPixel(w, h) != -1) { holdBlackPix = true; break; } } if (holdBlackPix) { break; } bottom++; } // 获取内容区域的宽高 int cropHeight = bitmap.getHeight() - bottom - top; int cropWidth = bitmap.getWidth() - left - right; // 获取内容区域的像素点 int[] newPix = new int[cropWidth * cropHeight]; int i = 0; for (int h = top; h < top + cropHeight; h++) { for (int w = left; w < left + cropWidth; w++) { newPix[i++] = bitmap.getPixel(w, h); } } // 创建切割后的 bitmap, 针对彩色图,把 newPix 替换为 originBitmap 的 pixs return Bitmap.createBitmap(newPix, cropWidth, cropHeight, Bitmap.Config.ARGB_8888); }}
0 0
- Android 去除 bitmap 无用的白色边框
- android去除ImageButton白色边框
- android去除ImageButton白色边框
- 去除游戏的白色边框
- Android怎么去除Dialog对话框的白色边框
- Android怎么去除Dialog对话框的白色边框
- Android怎么去除Dialog对话框的白色边框
- Android 对话框【Dialog】去除白色边框代码
- Android 对话框【Dialog】去除白色边框代码
- Android 对话框【Dialog】去除白色边框代码
- Android 对话框【Dialog】去除白色边框代码
- Android 对话框【Dialog】去除白色边框代码
- Android 对话框【Dialog】去除白色边框代码
- Android 对话框【Dialog】去除白色边框代码
- Android 对话框Activity去除白色边框背景
- Android 对话框【Dialog】去除白色边框代码
- Android 对话框【Dialog】去除白色边框代码
- Android 对话框【Dialog】去除白色边框代码
- Gradle详解-脚本基础知识
- 报表导出功能
- 如何使用Android Studio把自己的Android library分享到jCenter和Maven Central
- linux中利用有名管道实现进程之间的通信
- leafletjs 地图挂饼图
- Android 去除 bitmap 无用的白色边框
- ImagerLoader的原理
- java调用微信群发接口
- 自适应网页
- Swift - 进度条(UIProgressView)的用法
- 服务器启动org.apache.catalina.deploy.WebXml addFilter错误
- 枚举
- linux9.0安装VMware Tools问题解决
- 在AlertDialog中使用EditView时如何弹出软键盘