首页 > 移动平台 > 详细

android中图片的压缩问题

时间:2014-03-05 04:14:50      阅读:455      评论:0      收藏:0      [点我收藏+]

最近做一个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);
    }

android中图片的压缩问题,布布扣,bubuko.com

android中图片的压缩问题

原文:http://www.cnblogs.com/miceal/p/3580501.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!