首页 > 学院 > 开发设计 > 正文

bitmap图片压缩

2019-11-07 23:25:03
字体:
来源:转载
供稿:网友
/*** 图片压缩方法:(使用comPRess的方法)* * @explain 如果bitmap本身的大小小于maxSize,则不作处理* @param bitmap* 要压缩的图片* @param maxSize* 压缩后的大小,单位kb*/public static void imageZoom(Bitmap bitmap, double maxSize) {// 将bitmap放至数组中,意在获得bitmap的大小(与实际读取的原文件要大)ByteArrayOutputStream baos = new ByteArrayOutputStream();// 格式、质量、输出流bitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos);byte[] b = baos.toByteArray();// 将字节换成KBdouble mid = b.length / 1024;// 获取bitmap大小 是允许最大大小的多少倍double i = mid / maxSize;// 判断bitmap占用空间是否大于允许最大空间 如果大于则压缩 小于则不压缩if (i > 1) {// 缩放图片 此处用到平方根 将宽带和高度压缩掉对应的平方根倍// (保持宽高不变,缩放后也达到了最大占用空间的大小)bitmap = scale(bitmap, bitmap.getWidth() / Math.sqrt(i),bitmap.getHeight() / Math.sqrt(i));}}/**** 图片的缩放方法* * @param src* :源图片资源* @param newWidth* :缩放后宽度* @param newHeight* :缩放后高度*/public static Bitmap scale(Bitmap src, double newWidth, double newHeight) {// 记录src的宽高float width = src.getWidth();float height = src.getHeight();// 创建一个matrix容器Matrix matrix = new Matrix();// 计算缩放比例float scaleWidth = ((float) newWidth) / width;float scaleHeight = ((float) newHeight) / height;// 开始缩放matrix.postScale(scaleWidth, scaleHeight);// 创建缩放后的图片return Bitmap.createBitmap(src, 0, 0, (int) width, (int) height,matrix, true);}
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表