Android 图片压缩

最近遇到图片上传问题,手机拍照图片一般都是1M以上,过于庞大,使用iamgeView加载预览,偶尔出现out of memory 的错误。

以下是图片压缩方法

 

 public static  Bitmap InitImg(String imagePath)
    {
        // 设置参数
        BitmapFactory.Options options = new BitmapFactory.Options();
        options.inJustDecodeBounds = true; // 只获取图片的大小信息,而不是将整张图片载入在内存中,避免内存溢出
        BitmapFactory.decodeFile(imagePath, options);
        int height = options.outHeight;
        int width= options.outWidth;
        int inSampleSize = 2; // 默认像素压缩比例,压缩为原图的1/2
        int minLen = Math.min(height, width); // 原图的最小边长
        if(minLen > 100) {          
          float ratio = (float)minLen / 400.0f; // 计算像素压缩比例,此处根据实际情况修改
            inSampleSize = (int)ratio;
        }
        options.inJustDecodeBounds = false; // 计算好压缩比例后,这次可以去加载原图了
        options.inSampleSize = inSampleSize; // 设置为刚才计算的压缩比例
        Bitmap bm = BitmapFactory.decodeFile(imagePath, options); // 解码文件
        return  bm;
    }

 

posted @ 2018-04-03 11:07  ぃ流年☆  阅读(194)  评论(0编辑  收藏  举报