Android如何实现压缩图片后再上传至服务器

时间:2021-08-16 20:45:47

    我们现在手机的摄像头像素是越来越高,本以为一个500*500像素的照片应该不会很大,可是上传至服务器后竟然有200-300K,这对于哪些2G网络的手机来说,下载几十几张那简直就是灾难。好在我们有解决的办法。

    这里只说如何压缩图片的质量,不讨论如何裁剪图片和上传图片,关于这个功能随后我会专门写一个上传图片和裁剪的文章。

具体方法是这样的

Bitmap photo = BitmapFactory.decodeFile(图片路径);

Bundle extra = data.getExtras();

photo = (Bitmap) extra.get("data"); 

(这里是通过裁剪后,使用onActivityResult方法获取到的图片)

核心就是下面的一句

ByteArrayOutputStream stream = new ByteArrayOutputStream();

photo.compress(Bitmap.CompressFormat.JPEG,100,stream);

注意这里的第二个参数默认是100是不进行压缩处理的,你可以根据具体情况进行处理,我的设置是30基本上可以保证图片不会失真。可以把200-300K的图片压缩至40K左右。然后就可以将该图片显示在ImageView中。

下面说说如何将图片压缩将保存至SD卡中:

Bitmap Photo还是原来的Photo

String filePath = DuParm.tempPath + BannerFileName;
File file = new File(filePath);
try {
file.createNewFile();
FileOutputStream fOut = null;
fOut = new FileOutputStream(file);
if(photo.compress(Bitmap.CompressFormat.JPEG,100,fOut)){
fOut.flush();
fOut.close();
}
} catch (IOException e) {
e.printStackTrace();
}
toUploadFile(filePath);


toUploadFile是我的一个上传方法,回头再说。

(完)