美文网首页Android开发经验谈Android开发android 开发程序员
可能是Android平台上最快的图片压缩框架

可能是Android平台上最快的图片压缩框架

作者: ghnor | 来源:发表于2017-09-30 10:52 被阅读148次

emmm...不管怎么说,我也写了一个图片压缩框架。
在Luban的算法策略上,我丰富了外围的api,提供更多的可配参数,多线程压缩和不同细粒度的任务控制。

项目地址

https://github.com/ghnor/Flora

依赖

dependencies {
    ...
    
    compile 'com.android.support:appcompat-v7:25.3.1'
    compile 'com.ghnor:flora:1.0.0-alpha1'
}

用法用例

  • 异步压缩:
Flora.with().load(source...).compress(new Callback<>());
  • 同步压缩:
Flora.with().load(R.drawable.test2).compressSync();

可控的压缩任务

Flora.with(Activity)
Flora.with(FragmentActivity)
Flora.with(Fragment)
Flora.with(SupportFragment)
// 上面的四类,会自动在页面生命周期结束后,终止压缩任务。

// 通过TAG标志位来结束一系列的任务。
Flora.with(TAG)
// 强制结束任务。
Flora.cancel(TAG);

// 无参,此时的任务进行其实是不受控的,强烈建议不要采用这种写法。
Flora.with() 

更多属性

Flora.with()
        // 配置inSample和quality的算法,内置了一套基于Luban的压缩算法
        .calculation(new Calculation() {
            @Override
            public int calculateInSampleSize(int srcWidth, int srcHeight) {
                return super.calculateInSampleSize(srcWidth, srcHeight);
            }

            @Override
            public int calculateQuality(int srcWidth, int srcHeight, int targetWidth, int targetHeight) {
                return super.calculateQuality(srcWidth, srcHeight, targetWidth, targetHeight);
            }
        })
        // 对压缩后的图片做个性化地处理,如:添加水印
        .addDecoration(new Decoration() {
            @Override
            public Bitmap onDraw(Bitmap bitmap) {
                return super.onDraw(bitmap);
            }
        })
        // 配置Bitmap的色彩格式
        .bitmapConfig(Bitmap.Config.RGB_565)
        // 最大文件尺寸,不建议配置此项,目前采用的方式是重复写入文件,判断大小,比较耗时
        .maxFileSize(1.0)
        // 同时可进行的最大压缩任务数量
        .compressTaskNum(1)
        // 安全内存,设置为2,表示此次压缩任务需要的内存小于1/2可用内存才进行压缩任务
        .safeMemory(2)
        // 压缩完成的图片在磁盘的存储目录
        .diskDirectory(File)
        .load(source...)
        .compress();

其他

  • 压缩速度

本身内部采用线程池的方案去进行压缩任务,同时进行了必要的内存检查。

在不会OOM的前提下,最大的提升了压缩的速度,常见的9图大小在20M+能够在2s内处理完成。

当然,机器性能,系统当时的内存都是对此产生影响,我的测试机是【魅蓝Note】...

  • 压缩效果

由于压缩策略集成自Luban,所以最后图片压缩大小前后对比可以参考Luban。

我在此基础上,对社交产品中常见的长图的需求进行了一定的优化。

相关文章

  • Android进阶教程

    可能是Android平台上最快的图片压缩框架。 emmm...不管怎么说,我也写了一个适用于Android平台的图...

  • 可能是Android平台上最快的图片压缩框架

    emmm...不管怎么说,我也写了一个图片压缩框架。在Luban的算法策略上,我丰富了外围的api,提供更多的可配...

  • Android 图片压缩框架Compressor

    第三方图片压缩框架: Compressor 使用步骤 导入依赖 调用压缩方法 3.自定义压缩比例

  • 图片压缩框架LuBan源码解析

    首先科普下图片压缩的基础知识在 Android 平台上,默认提供的压缩有三种方式:质量压缩和两种尺寸压缩,邻近采样...

  • Android-推荐一个图片压缩框架(Luban)

    在日常的Android开发当中,我们肯定会遇到对上传的图片先进行压缩的需求,这里推荐一个常用的图片压缩框架——Lu...

  • Android图片加载框架——Glide(Glide v4)

    前言 android中图片加载框架有很多,所有框架最终达到的目都是在Android平台上以极度简单的方式加载和展示...

  • Android Picasso分析

    Picasso是Square公司开源的一个Android平台上的图片加载框架 核心类: Picasso:负责图片下...

  • iOS性能优化

    1,把图片资源压缩到最小apple推荐使用resizable image压缩图片,这是最快的方法。另外还有icon...

  • 图片压缩

    Android应用开发中三种常见的图片压缩方法,分别是:质量压缩法、比例压缩法(根据路径获取图片并压缩)和比例压缩...

  • Android:图片压缩的几种方式

    1、前言 在Android中,图片的压缩对于内存的优化很重要 通过这篇文章对Android中的几种图片压缩方式进行...

网友评论

    本文标题:可能是Android平台上最快的图片压缩框架

    本文链接:https://www.haomeiwen.com/subject/hpsgextx.html