美文网首页
Android-图片压缩

Android-图片压缩

作者: 有腹肌的豌豆Z | 来源:发表于2020-09-30 13:32 被阅读0次

    Luban

    异步调用

    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();
    

    同步调用

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

    相关文章

      网友评论

          本文标题:Android-图片压缩

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