最近遇到图片上传问题,手机拍照图片一般都是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; }