Android图片压缩学习

来源:互联网 发布:淘宝优惠券小程序 编辑:程序博客网 时间:2024/06/14 05:28

Android图片压缩学习

很多情况下需要对一张分辨率特别高的图片进行压缩,
不然会导致在很小的控件上使用了一张非常大分辨率的图片而OOM


在BItmapFactory.Options中设置inSampleSize的值,比如一个20148X1536的图片, inSampleSize设置为4,那么会产出一个512X384大小的bitmap

获取图片大小

public int calculateInSampleSize(            BitmapFactory.Options options,int reqWidth, int reqHeight    ){        final int height = options.outHeight;        final int width = options.outWidth;        int inSampleSize = 1;        if(height > reqHeight || width > reqWidth){            final int halfHeight = height/2;            final int halfWidth = width/2;            while ((halfHeight / inSampleSize) > reqHeight                    || (halfWidth / inSampleSize) > reqWidth)            {                inSampleSize *= 2;            }        }        return inSampleSize;    }

加载图片压缩图片

    public Bitmap decodeSampledBitmapFormResoure(int res,int reqWidth,int reqHeight){            final BitmapFactory.Options options = new BitmapFactory.Options();            options.inJustDecodeBounds = true;            BitmapFactory.decodeResource(getResources(),res,options);            options.inSampleSize = calculateInSampleSize(options,reqWidth,reqHeight);            options.inJustDecodeBounds = false;            return BitmapFactory.decodeResource(getResources(),res,options);    }

这样就可以加载简单的图片并且压缩

0 0