图片压缩工具

1. 简介

Android图片压缩工具, 基于Luban压缩框架。

1.1. 功能点

提供3个等级. 最后效果3>2>1

  1. FIRST_GEAR //质量,尺寸压缩都进行了 压缩都最厉害但是不清晰了
  2. THIRD_GEAR //质量,尺寸压缩都进行了
  3. CUSTOM_GEAR //只进行质量压缩,像素不变

2. 基础环境

  • AndroidStudio 3.4.+
  • java1.8
  • gradle 5.1.1

3. 如何使用

3.1. Release版本

  • 项目依赖
allprojects {
  repositories {
        maven {
               // 配置用户名和密码
               credentials {
                   username 'anonymous'
                   password ''
               }
               // 配置仓库地址
               url 'http://172.16.28.234:8083/repository/maven-releases/'
           }
  }
}
  • 添加依赖
    implementation 'com.jpxx.android.library:compress:latest.integration'

3.1.1. 快照版本

  • 项目依赖
allprojects {
  repositories {
        maven {
               // 配置用户名和密码
               credentials {
                   username 'anonymous'
                   password ''
               }
               // 配置仓库地址
               url 'http://172.16.28.234:8083/repository/maven-snapshots/'
           }
  }
}
  • 添加依赖
    implementation 'com.jpxx.android.library:compress:1.0.0-SNAPSHOT'

4. 使用说明

4.1. 方法列表

方法 描述
load 传入原图
putGear 设置压缩等级
setMaxSize 图片压缩后的最大尺寸,单位为Kb
setFilename 设置压缩后的文件名
setMaxWidth 缓存压缩图片路径
setMaxHeight 压缩后图片最大高度
launch 压缩结果回调

4.2. 异步调用

Luban内部采用IO线程进行图片压缩,外部调用只需设置好结果监听即可:

Luban.with(this)
        .load(photos)
        .ignoreBy(100)
        .setTargetDir(getPath())
        .filter(new CompressionPredicate() {
          @Override
          public boolean apply(String path) {
            return !(TextUtils.isEmpty(path) || path.toLowerCase().endsWith(".gif"));
          }
        })
        .setCompressListener(new OnCompressListener() {
          @Override
          public void onStart() {
            // TODO 压缩开始前调用,可以在方法内启动 loading UI
          }

          @Override
          public void onSuccess(File file) {
            // TODO 压缩成功后调用,返回压缩后的图片文件
          }

          @Override
          public void onError(Throwable e) {
            // TODO 当压缩过程出现问题时调用
          }
        }).launch();

4.3. 同步调用

同步方法请尽量避免在主线程调用以免阻塞主线程,下面以rxJava调用为例

Flowable.just(photos)
    .observeOn(Schedulers.io())
    .map(new Function<List<String>, List<File>>() {
      @Override public List<File> apply(@NonNull List<String> list) throws Exception {
        // 同步方法直接返回压缩后的文件
        return Luban.with(MainActivity.this).load(list).get();
      }
    })
    .observeOn(AndroidSchedulers.mainThread())
    .subscribe();

源码地址:http://172.16.28.234:8081/dev-plat/android/lib/compress

源码地址:http://sources.jpsycn.com/dev-plat/android/lib/compress.git

版权归河南金鹏信息技术股份有限公司所有,仅用于技术交流,禁止用于商业目的 all right reserved,powered by Gitbook该文件修订时间: 2020-03-21 17:17:35

results matching ""

    No results matching ""