Android 缩放Bitmap到指定比例大小

需求如下:
Android手机端通过拍照软件拍出一张照片,然后需要程序将这张照片的分辨率压缩至宽度为720的等比缩小版然后上传到服务器。
于是问题就来了:我要如何等比压缩这张图片?

  1. 我试过通过inSampleSize进行压缩,但是这个值只能是2的幂,因此设置之后它很有可能压缩的不是我指定的大小。

  2. 通过Matrix进行缩放,但是种方法需要读取拍到的照片到内存中,不过摄像头拍出的照片挺大的,容易出现OOM异常。

阅读 11.2k
3 个回答

你可以先用inSampleSize获得一张近似大小的图片,再用Matrix进行缩放到指定大小嘛╮(╯_╰)╭

首先,Android上只能整数压缩,不能小数压缩,图片不可能刚好压缩至宽度为720
其次,一般是图片缩小至小于720的照片之后,再进行显示,不够720的地方可以空着,可以绘制默认底色,可以裁剪等等,视具体情况而定

Bitmap bitmap = getCompressForQualitySize(os, (int) sampleSize);
ByteArrayOutputStream osSecond = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, options, osSecond);
用等比例缩放来做吧,先获取图片的宽高,然后按照比例缩小到 720就行了,但是可能会有些偏差

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题