一.Luban是什么?

Luban(鲁班) —— Android图片压缩工具,仿微信朋友圈压缩策略。

二.使用步骤

1.引入依赖
  //图片压缩库implementation 'top.zibin:Luban:1.1.8'
2.属性方法
方法 描述
load 传入原图
filter 设置开启压缩条件
ignoreBy 不压缩的阈值,单位为K
setFocusAlpha 设置是否保留透明通道
setTargetDir 缓存压缩图片路径
setCompressListener 压缩回调接口
setRenameListener 压缩前重命名接口
3.使用

这个是在于拍照或从相册中选择图片上传前进行压缩的

 /*** todo onActivityResult 对拍照、相册选择图片的返回结果进行处理* @param requestCode 返回码,用于确定是哪个 Activity 返回的数据* @param resultCode 返回结果,一般如果操作成功返回的是 RESULT_OK* @param data 返回对应 activity 返回的数据*/@Overrideprotected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {super.onActivityResult(requestCode, resultCode, data);switch (requestCode){// 表示 调用照相机拍照case REQUEST_CODE_FROM_CAMERA:if(resultCode == RESULT_OK){try {// 获取输入流FileInputStream is = new FileInputStream(mFilePath);// 把流解析成bitmap,此时就得到了清晰的原图Bitmap imageBitmap = BitmapFactory.decodeStream(is);// 使用insertImage方法是要获取到写存储权限Uri imageUri = Uri.parse(MediaStore.Images.Media.insertImage(getContentResolver(),imageBitmap, "IMG"+ Calendar.getInstance().getTime() ,null));//imgString = UriToFile(imageUri);getFile(imgString,imageUri,1);} catch (FileNotFoundException e) {e.printStackTrace();}}break;//相册case REQUEST_CODE_FROM_PHOTO:if(resultCode == RESULT_OK){Uri uri = data.getData();imgString = UriToFile(uri);getFile(imgString,uri,2); //压缩并上传}break;}}/*** todo 使用 luban 第三方库 压缩图片* @param path 原图片路径(String)* @param uri* @param flag*/private void getFile(String path,Uri uri,int flag) {//        File file = new File(path.getPath());//创建文件Luban.with(this).load(path)                     // 传入要压缩的图片路径.setCompressListener(new OnCompressListener() { // 设置回调@Overridepublic void onStart() {// 压缩开始前调用,可以在方法内启动 loading UI}@Overridepublic void onSuccess(File file) {// 压缩成功后调用上传图片接口,File是压缩后的图片文件upLoadImg(file.getPath(),uri,flag);}@Overridepublic void onError(Throwable e) {e.printStackTrace();}}).launch();}/*** todo 上传图片(api)* @param imgString 压缩后的图片路径 (字符串)* @param uri  Uri图片资源* @param flag 上传方式,取值1,2。1表示拍照,2表示相册*/private void upLoadImg(String imgString,Uri uri,int flag) {//使用接口上传图片}

上面对图片就可以进行压缩啦,当然,我上面是一张一张上传压缩,如果是一组的话,也很简单,稍微改下就可以

 private void getFile1(List<String> images) {Luban.with(this).load(images)                     // 传入要压缩的图片数组.setCompressListener(new OnCompressListener() { // 设置回调@Overridepublic void onStart() {// 压缩开始前调用,可以在方法内启动 loading UI}@Overridepublic void onSuccess(File file) {// 压缩成功后调用上传图片接口,File是压缩后的图片文件upLoadImg1(file.getPath());}@Overridepublic void onError(Throwable e) {e.printStackTrace();}}).launch();}

android中图片压缩上传方法之Luban库相关推荐

  1. 写给大忙人看的 - Java中图片压缩上传至MinIO服务器(4)

    之前文章已经介绍了 MinIO 的环境搭建,已经对文件的上传下载方法,本篇文章一起与大家来学习图片压缩上传的方法 1.背景 最近客户总抱怨 APP 中图片显示较慢, 升级服务器带宽又没有多的预算.查看 ...

  2. JS 图片压缩上传并在iOS中矫正方向

    JS 图片压缩上传并在iOS中矫正方向 最近在项目中,用到图片上传.如果不进行压缩再上传的话,动辄34兆的图片,上传起来会相当漫长.还有一点就是,在iOS中所拍摄的图片在本地显示是没有问题的,但是上传 ...

  3. web 前端图片优化之--图片压缩上传

    移动前端-图片压缩上传实践  此前有同事跟我聊过关于移动端用canvas压缩图片后再上传的功能,最近有了点空闲时间,所以就实践了一下.demo效果链接在文章底部贴出. 在做移动端图片上传的时候,用户传 ...

  4. 移动端实现图片压缩上传

    移动端实现图片压缩上传 目前来说,HTML5的各种新API都在移动端的webkit上得到了较好的实现.根据查看caniuse,本demo里使用到的FileReader.Blob.Formdata对象均 ...

  5. 前端图片压缩上传(纯js的质量压缩,非长宽压缩)

    前端图片压缩上传(纯js的质量压缩,非长宽压缩) 此demo为大于1M对图片进行压缩上传 若小于1M则原图上传,可以根据自己实际需求更改. demo源码如下: <!DOCTYPE html> ...

  6. 基于Plupload的图片压缩上传

    前言 这里的上传工具基于JQuery.Plupload 传送门:Plupload官方.中文文档 为什么要做图片压缩? 现在手机拍照都快10M了,但是有时候图片上传只要看得清楚就可以了,比如上传身份证2 ...

  7. JS前端图片压缩上传

    JS前端图片压缩上传重点知识 最近在做一个手机端的图片上传,写了一个比较符合自己要求的方法,可供参考 在做这个功能模块时,我遇到了以下问题,都花费了大量时间: 1. 不知道怎么压缩图片,(代码和方法) ...

  8. 前端图片压缩上传(压缩篇)

    为什么说这是一篇比较适合小白的前端图片压缩文章呢?因为我也是一个刚工作半年的前端小白,最近接到了一个前端图片压缩上传的任务,通过各种百度博客完成了这项任务,但是任务完成后对各种技术细节却还不是特别理解 ...

  9. 基于vue + axios + lrz.js 微信端图片压缩上传

    业务场景 微信端项目是基于Vux + Axios构建的,关于图片上传的业务场景有以下几点需求: 1.单张图片上传(如个人头像,实名认证等业务) 2.多张图片上传(如某类工单记录) 3.上传图片时期望能 ...

  10. 图片粘贴上传(方法二)

    针对之前的图片粘贴上传方法进行封装,并给出使用案例,如下: 目录 一.封装的文件 1.css文件:paste-img-util.css 2.js文件:paste-img-util.js 3.表单上传j ...

最新文章

  1. java数组 相同颜色距离最远的_java-数组列表并找到具有相同编号的最长子...
  2. SQL(四) - 子查询和union以及limit分页
  3. ascii码01100001_ASCII码跟数字
  4. mysql封装执行_解决Mysql封装类执行报错——Mysql::insert() should not be called
  5. Stanford_NLP_TOOLS:CRFClassifier
  6. 删除文件夹下面n天前时间的文件
  7. 程序员如果不能干到退休,那程序员的路何去何从?
  8. Java设计模式学习记录-解释器模式
  9. matlab 正交多项式,求助~Matlab关于正交多项式
  10. creator pvr etc
  11. html圆圈男女,html圆形导航导航
  12. excel提取工作表名称
  13. MATLAB 数据分析方法(第2版)2.1 基本统计量与数据可视化
  14. 0基础java好学吗?完整学习路线图速收藏
  15. DRV8301驱动芯片BUCK电路设计
  16. Topcoder 2016 TCO Algorithm Algo Semifinal 1 Hard
  17. 爱普生几种低功耗时钟芯片
  18. 安卓Android下如何开发USB NFC读写器APP
  19. 我对国内软件行业的看法(一)
  20. 遗传算法概念、步骤、应用解析(案例直白--黄含驰)

热门文章

  1. Field II 超声声场仿真(2): 接收灵敏度(原理代码)
  2. 深入学习ElasticSearch(四)——mapping的详细讲解
  3. RNA-seq Review:RNA-seq数据分析
  4. SQL分组排序和排序函数(rank、dense_rank、row_number)
  5. 各代iphone尺寸_iPhone所有机型对比尺寸
  6. 做站源码下载地址及各类资源站点
  7. Python脚本提取氨基酸序列的 因子复杂度
  8. 如何卸载PLC200软件---SETP7
  9. 坚果pro2刷回官方_坚果Pro2刷机教程刷TWRP面具详细步骤_软件开发_IT综合服务
  10. 个人项目需求分析案例