我们现在手机的摄像头像素是越来越高,本以为一个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是我的一个上传方法,回头再说。
(完)