android中图片的压缩问题
最近做一个android项目中一个很不起眼的问题困扰了好久就是关于图片的压缩。功能描述:调用相机拍照,然后上传图片,类似QQ空间的发说说
因为一张图片现在手机拍出来都是在2M以上,不便于网络的传输。废话不说,直接上代码。
再次以事实告诉大家bitmap.compress(Bitmap.CompressFormat.JPEG, 100, out); 这种方法试图去压缩照片是徒劳的。
1
2
3
4
5
6
7
8
9
10
11
12
13
14 |
public static Bitmap reduce(Bitmap bitmap, int
width, int
height, boolean
isAdjust) { // 如果想要的宽度和高度都比源图片小,就不压缩了,直接返回原图 if
(bitmap.getWidth() < width && bitmap.getHeight() < height) { return
bitmap;} // 根据想要的尺寸精确计算压缩比例, 方法详解:public BigDecimal divide(BigDecimal divisor, int scale, int roundingMode); // scale表示要保留的小数位, roundingMode表示如何处理多余的小数位,BigDecimal.ROUND_DOWN表示自动舍弃 float
sx = new
BigDecimal(width).divide( new
BigDecimal(bitmap.getWidth()), 4 , BigDecimal.ROUND_DOWN).floatValue(); float
sy = new
BigDecimal(height).divide( new
BigDecimal(bitmap.getHeight()), 4 , BigDecimal.ROUND_DOWN).floatValue(); if
(isAdjust) { // 如果想自动调整比例,不至于图片会拉伸 sx = (sx < sy ? sx : sy);sy = sx; // 哪个比例小一点,就用哪个比例 } Matrix matrix = new
Matrix(); matrix.postScale(sx, sy); // 调用api中的方法进行压缩,就大功告成了 return
Bitmap.createBitmap(bitmap, 0 , 0 , bitmap.getWidth(), bitmap.getHeight(), matrix, true ); } |
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。