图表的压缩格局分别,图片类型*宽*高

[toc]

图片的缩减格局分别:品质滑坡和尺寸裁减。

图片的回落格局分别

质量压缩和尺寸压缩。

品质滑坡是在维持像素的前提下转移图片的位深及折射率等,来达到减弱图片的目标,经过它收缩的图纸文件大小会有改观,不过导入成bitmap后占得内部存款和储蓄器是不变的。因为要维持像素不变,所以它就不恐怕Infiniti压缩,到达3个值之后就不会持续变小了。鲜明这一个主意并不适用与缩略图,其实也不适用于想经过压缩图片减弱内部存款和储蓄器的适用,仅仅适用于想在承接保险图片品质的同时收缩文件大小的动静而已

尺寸收缩是减掉图片的像素,一张图片所占内存的大小
图片类型*宽*高,通过变更多少个值减小图片所占的内部存款和储蓄器,幸免OOM,当然那种艺术或许会使图片失真

品质滑坡:

public Bitmap compressImage(Bitmap image,int imageSize) {  

        ByteArrayOutputStream baos = new ByteArrayOutputStream();  
        image.compress(Bitmap.CompressFormat.JPEG, 100, baos);//质量压缩方法,这里100表示不压缩,把压缩后的数据存放到baos中  
        int options = 100;  
        while ( baos.toByteArray().length / 1024>imageSize) {  //循环判断如果压缩后图片是否大于100kb,大于继续压缩         
            baos.reset();//重置baos即清空baos  
            image.compress(Bitmap.CompressFormat.JPEG, options, baos);//这里压缩options%,把压缩后的数据存放到baos中  
            options -= 10;//每次都减少10  
        }  
        ByteArrayInputStream isBm = new ByteArrayInputStream(baos.toByteArray());//把压缩后的数据baos存放到ByteArrayInputStream中  
        Bitmap bitmap = BitmapFactory.decodeStream(isBm, null, null);//把ByteArrayInputStream数据生成图片  
        return bitmap;  
    } 

尺寸收缩:

public void scalePic(int reqWidth,int reqHeight) {
        BitmapFactory.Options options = new BitmapFactory.Options();
        options.inJustDecodeBounds = true;
        BitmapFactory.decodeResource(getResources(), R.mipmap.demo, options);
        options.inSampleSize = PhotoUtil.calculateInSampleSize(options, reqWidth,reqHeight);
        options.inJustDecodeBounds = false;
        bitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.demo, options);

        postInvalidate();
    }

public static 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 heightRatio = Math.round((float) height / (float) reqHeight);
            final int widthRatio = Math.round((float) width / (float) reqWidth);
            inSampleSize = heightRatio < widthRatio ? heightRatio : widthRatio;
        }
        return inSampleSize;
    }

基于实际必要也得以三种压缩格局组成使用

品质滑坡是在保证像素的前提下改变图片的位深及光滑度等,来完结减弱图片的指标,经过它减弱的图片文件大小会有改动,可是导入成bitmap后占得内部存款和储蓄器是不变的。因为要保持像素不变,所以它就不大概Infiniti压缩,到达多个值之后就不会三番五次变小了。鲜明那个办法并不适用与缩略图,其实也不适用于想透过减弱图片减少内部存款和储蓄器的适用,仅仅适用于想在保障图片品质的同时收缩文件大小的状态而已

尺寸缩小 是削减图片的像素,一张图纸所占内部存款和储蓄器的大小
图片类型*宽*高,通过改变多少个值减小图片所占的内部存款和储蓄器,制止OOM,当然那种措施只怕会使图片失真

图片 1图片 2

网站地图xml地图