96编辑器旗下产品
找图
终身
ID:0
到期时间:永久
退出登录
您的位置:首页 > 百科管理 > 详情

android图片压缩转向-Android黑科技,图片终极压缩

原创:找图网 2023-05-03 16:33:48
  • 说说在 Android 中如何压缩图片

  • 目前存在两种压缩图片方式:

    而图片有三种存在形式:

    bigmap 在内存中的大小是按像素计算的,也就是width * height,所以如果需要在 Android 中显示照片,那么就必须进行按比例压缩,避免因为内存消耗过大,导致 APP 退出。

    是不是很简单呀 O(∩_∩)O哈哈~

  • 说说在 Android 中如何压缩图片

  • 1:ByteArrayOutputStream 压缩图片质量,不会改变图片大小

    private Bitmap compressImage(Bitmap image) {

            ByteArrayOutputStream baos = new ByteArrayOutputStream();

            (, 100, baos);//质量压缩方法,这里100表示不压缩,把压缩后的数据存放到baos中

            int options = 100;        while ( ().length / 1024>100) { //循环判断如果压缩后图片是否大于100kb,大于继续压缩

                ();//重置baos即清空baos

                (, options, baos);//这里压缩options%,把压缩后的数据存放到baos中

                options -= 10;//每次都减少10        }

            ByteArrayInputStream isBm = new ByteArrayInputStream(());//把压缩后的数据baos存放到ByteArrayInputStream中

            Bitmap bitmap = (isBm, null, null);//把ByteArrayInputStream数据生成图片

            return bitmap;

        }

    2:就是改变图片大小

    private Bitmap getimage(String srcPath) {

             newOpts = new ();        //开始读入图片,此时把 设回true了

             = true;

            Bitmap bitmap = (srcPath,newOpts);//此时返回bm为空

             = false;        int w = ;        int h = ;        //现在主流手机比较多是800*480分辨率,所以高和宽我们设置为

            float hh = 800f;//这里设置高度为800f

            float ww = 480f;//这里设置宽度为480f        //缩放比。由于是固定比例缩放,只用高或者宽其中一个数据进行计算即可

            int be = 1;//be=1表示不缩放

            if (w > h && w > ww) {//如果宽度大的话根据宽度固定大小缩放

                be = (int) ( / ww);

            } else if (w < h && h > hh) {//如果高度高的话根据宽度固定大小缩放

                be = (int) ( / hh);

            }        if (be <= 0)

                be = 1;

             = be;//设置缩放比例        //重新读入图片,注意此时已经把 设回false了

            bitmap = (srcPath, newOpts);        return compressImage(bitmap);//压缩好比例大小后再进行质量压缩    }

  • Android黑科技,图片终极压缩

  • 一、支持自定义配置、不失真和批量处理

    二、图片上传为什么要压缩

    1、图片服务器空间限制,磁盘昂贵

    2、网络不稳定,大文件需要断点续传

    3、尽可能避免安卓OOM异常

    4、后台约定的规则<200KB

    5、需要上传原图的应用有医院临床项目、金融银行

    三、图片压缩流程

    1、递归每张图片

    2、设置图片格式

    png, jpg,webp

    3、质量压缩(format,quality,baos)

    由于png是无损压缩,所以设置quality无效(不适合作为缩略图)

    采样率压缩

    缩小图片分辨率,减少所占用磁盘空间和内存大小

    缩放压缩(bitmap, null,rectF,null)

    减少图片的像素,降低所占用磁盘空间大小和内存大小,可用于缓存缩略图

    JNI调用JPEG库

    Android的图片引擎使用的是阉割版的skia引擎,去掉了图片压缩中的哈夫曼算法

    4、像素修复

    5、返回压缩

    6、完成压缩

    demo:

    参考:

    Luban框架

    缺点

    1、当没有设定压缩路径时,抛异常无闪退

    2、源码中,压缩比率固定值60,无法修改

    3、压缩配置,参数不太适应真实项目需求

    4、不能指定压缩大小,比如100KB以内

    最新文章 更多
    最新素材 更多
    公司介绍 网站地图 图片资讯
    Copyright © 2010-2022 山东找图网络科技有限公司  鲁ICP备18007836号-3  邮箱:15653358549@163.com