Android编程之Bitmap图片压缩大小

Bitmap图片太大,会造成内存溢出。一般的都有图片预览机制,就是得到一张尺寸小一点的图片。

这里所谓的缩小尺寸可不是指在layout中设置一下宽高使图片缩小(其实质还是一张占内存大图),而是实实在在的将图片本身缩小,减小内存占用。

以下是方法,详细说明都在注释里了:

private Bitmap revitionImageSize(String path, int size) throws IOException {  

        // 取得图片            InputStream temp = this.getAssets().open(path);           BitmapFactory.Options options = new BitmapFactory.Options();           // 这个参数代表,不为bitmap分配内存空间,只记录一些该图片的信息(例如图片大小),说白了就是为了内存优化            options.inJustDecodeBounds = true;           // 通过创建图片的方式,取得options的内容(这里就是利用了java的地址传递来赋值)            BitmapFactory.decodeStream(temp, null, options);           // 关闭流            temp.close();              // 生成压缩的图片            int i = 0;           Bitmap bitmap = null;           while (true) {               // 这一步是根据要设置的大小,使宽和高都能满足                if ((options.outWidth >> i <= size)                       && (options.outHeight >> i <= size)) {                   // 重新取得流,注意:这里一定要再次加载,不能二次使用之前的流!                    temp = this.getAssets().open(path);                   // 这个参数表示 新生成的图片为原始图片的几分之一。                    options.inSampleSize = (int) Math.pow(2.0D, i);                   // 这里之前设置为了true,所以要改为false,否则就创建不出图片                    options.inJustDecodeBounds = false;                      bitmap = BitmapFactory.decodeStream(temp, null, options);                   break;               }               i += 1;           }           return bitmap;  

效果图:

Android编程之Bitmap图片压缩大小

以下是工程文件:

Bitmap图片压缩大小源码下载

免费下载地址在

用户名与密码都是

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/222395af111809a1054e5762200822b5.html