这两天在做的一个app对图片进行压缩,踩了几个坑,这里记录一下。
参考文章:http://blog.csdn.net/an_illusion/article/details/51545012
百度上很多解决方案使用Bitmap.compress()方法来进行图片压缩:
OutputStream out = new FileOutputStream(file);
bm.compress(Bitmap.CompressFormat.JPEG, 80, out);
imageView.setImageBitmap(bm);
第二个参数为保留图片质量(大致这么理解),原图为100,最低为0,但并不是百分比计算压缩率
然而这个方法并没有对输出的图片进行压缩,输出后的图片还是原始大小(据说图像质量会变差,变模糊,但我并没这么觉得,文件大小也没变)
根据比例压缩
后来找到使用BitmapFactory.Options来压缩图片的解决方案,有效并且避免了OOM:
// 从选取相册的Activity中返回后
Uri imageUri = data.getData();
String[] filePathColumns = {MediaStore.Images.Media.DATA