美文网首页Android
安卓图片压缩

安卓图片压缩

作者: 不略 | 来源:发表于2022-10-31 01:28 被阅读0次
    1.依赖导入
    implementation 'top.zibin:Luban:1.1.8'
    

    ![IG0D~E)2XS$HS1@K(9)Q@8.png

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

    相关文章

      网友评论

        本文标题:安卓图片压缩

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