Android中通过Luban压缩框架实现对图片的压缩

本文介绍Luban——一款Android图片压缩框架,模仿微信朋友圈压缩策略,提供load、filter、ignoreBy等方法实现图片压缩。通过示例代码展示如何使用Luban进行图片压缩,包括异步和同步调用方式。

前言:在安卓开发中,图片压缩是常用的一个功能,比如在做头像上传的时候就需要对用户上传的头像裁剪压缩。下面我就简单来介绍一下我平常常用的一个图片压缩框架。

Luban

Luban —— Android图片压缩框架,主要是仿微信朋友圈压缩策略

框架的github链接:https://github.com/Curzibn/Luban

接下来来介绍如何使用:

导入

compile 'top.zibin:Luban:1.1.8' 或 implementation 'top.zibin:Luban:1.1.8'

方法列表

方法描述
load传入原图
filter设置开启压缩条件
ignoreBy不压缩的阈值,单位为K
setFocusAlpha设置是否保留透明通道
setTargetDir缓存压缩图片路径
setCompressListener压缩回调接口
setRenameListener压缩前重命名接口

异步调用

Luban.with(this)
      .load(selectPath)  // 传人要压缩的图片列表(包括file,path,List<String>)
      .ignoreBy(100)   // 不压缩图片的大小
      .setTargetDir(Constant.DICTIONARY)//压缩文件保存路径
      .setCompressListener(new OnCompressListener() {
              @Override
              public void onStart() {
                   // 压缩开始前调用
              }

              @Override
              public void onSuccess(File file) {
                   // 压缩成功后调用,返回压缩后的图片文件
                   showBaseToast("图片路径:" + file.getPath());
              }

              @Override
              public void onError(Throwable e) {
                   // 当压缩过程出现问题时调用
                   System.out.println("错误信息: " + e.getMessage());
                   showBaseToast("图片压缩失败");
              }
           }).launch(); //启动压缩

同步调用

同步方法请尽量避免在主线程调用以免阻塞主线程,下面以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();

以上就是对Luban图片压缩框架的简单介绍,还有我也在用的另外一个图片压缩框架是Compressor 可以返回bitmap对象,感兴趣的童鞋可以自行研究, github链接:https://github.com/zetbaitsu/Compressor

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

等风起了

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值