专栏首页恩蓝脚本Android LuBan与Compressor图片压缩方式

Android LuBan与Compressor图片压缩方式

1,LuBan压缩问题 https://github.com/Curzibn/Luban

之前选择压缩图片库,在github上找的这个star最多的,使用方法是传入图片数组,在异步线程中回调返回的结果。接下来就出现问题了,压缩的图片质量模糊,虽然可以设置多少KB一下不压缩,在正常手机屏幕压缩没太大问题。但是在平板,同一张图片,压缩就会模糊。

Luban.with(this)
    .load(photos)                  // 传人要压缩的图片列表
    .ignoreBy(100)                 // 忽略不压缩图片的大小
    .setTargetDir(getPath())            // 设置压缩后文件存储位置
    .setCompressListener(new OnCompressListener() { //设置回调
     @Override
     public void onStart() {
      // TODO 压缩开始前调用,可以在方法内启动 loading UI
     }

     @Override
     public void onSuccess(File file) {
      // TODO 压缩成功后调用,返回压缩后的图片文件
     ***在此判断是否压缩完毕,根据返回的图片++与原数组size比较***
     }

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

2,Compressor https://github.com/zetbaitsu/Compressor

这个压缩是在主线程中的耗时操作,需要自己去写一个异步线程,并通过handler传递消息到主线程。

.setMaxWidth(640).setMaxHeight(480)这两个数值越高,压缩力度越小,图片也不清晰,

.setQuality(75)这个方法只是设置图片质量,并不影响压缩图片的大小KB

.setCompressFormat(Bitmap.CompressFormat.WEBP) WEBP图片格式是Google推出的 压缩强,质量高,但是IOS不识别,需要把图片转为字节流然后转PNG格式

.setCompressFormat(Bitmap.CompressFormat.PNG)PNG格式的压缩,会导致图片变大,并耗过大的内存,手机反应缓慢

.setCompressFormat(Bitmap.CompressFormat.JPEG)JPEG压缩;压缩速度比PNG快,质量一般,基本上属于1/10的压缩比例

              try {

                File file  = new Compressor(activity)
                      .setMaxWidth(640)
                      .setMaxHeight(480)
                      .setQuality(100)
                      .setCompressFormat(Bitmap.CompressFormat.JPEG)
                      .setDestinationDirectoryPath(Environment.getExternalStoragePublicDirectory(
                          Environment.DIRECTORY_PICTURES).getAbsolutePath())
                      .compressToFile(new File(filePath));

              String imageString=file.getPath();
                paths.add(imageString);
              } catch (IOException e) {
                e.printStackTrace();
              }

在此判断paths的大小是否等于图片数组大小,判断是否调用handler传递消息到主线程去坐其他操作

以上就是本文的全部内容,希望对大家的学习有所帮助。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 详解Android Bitmap的常用压缩方式

    已经好久没有更新博客,大概有半年了,主要是博主这段时间忙于找工作,Android岗位的工作真的是越来越难找,好不容易在广州找到一家,主要做海外产品,公司研发实力...

    砸漏
  • Tkinter中复选菜单是否被选中的判断与设置方式

    以上这篇Tkinter中复选菜单是否被选中的判断与设置方式就是小编分享给大家的全部内容了,希望能给大家一个参考。

    砸漏
  • 简述Android中SELinux的TE

    SELinux使用类型强制来改进强制访问控制。所有的主体(程序进程)对客体(文件/socket等资源)的访问都有一条TE规则来许可。当程序访问一个资源的时候,系...

    砸漏
  • 介绍一款超轻量级分享框架 openShare,秒集成社会化分享

    用户2141756
  • 腾讯技术分享:社交网络图片的带宽压缩技术演进之路

    腾讯社交网络相关产品,例如腾讯课堂、增值会员、动漫、直播、游戏商城、音乐、Qzone校园等,主要目标群体定位为年轻一代,属于对新事物接受比较高也更喜欢新鲜个性内...

    JackJiang
  • 腾讯社交网络图片带宽优化技术演进之路

    作者介绍:游佳龙,腾讯高级工程师,目前专注于SNG组件运维工作。6年运维领域相关工作经验,具备中间、云计算、接入组件、CDN网络等建设优化能力。 前言 腾...

    织云平台团队
  • Android 2.x中使用actionbar - Actionbarsherlock

    1. 范例说明 从Android 3.0开始,Android引入了ActoinBar,不得不说3.0之前android的标题栏确实比较丑,并且还没有任何功能。...

    欢醉
  • MONGODB 磁盘与内存的数据格式是否一致

    但后续的问题我模糊了,例如磁盘和内存的数据是否完全一致,压缩的比率是多少,等等。人无完人,我也不是DB 百科全书。不过好在还不是中年油腻大叔,模糊了那就lear...

    AustinDatabases
  • 搭建手机抓包环境

    智能手机的普及,这使得移动互联网成为另一个流量巨头。越来越多的公司也会转而直接提供 App 来展示内容。例如微信以及其生态(微信公众号、小程序)、抖音等。这也说...

    猴哥yuri
  • 白话https原理

    https好处多多,用https协议传输信息,信息的安全性会得到保障,用http传递信息几乎等于裸奔了,如图所示:

    挥刀北上

扫码关注云+社区

领取腾讯云代金券