CompressImage是集成图片的质量压缩,像素压缩以及基于Luban算法的图片压缩三种压缩方式的工具

功能如下:

1. 质量压缩:从质量层面进行相关压缩(原图片可通过该工具压缩至小于期望大小的图片)

2. 像素压缩:设定固定的长和宽,然后进行压缩

3. 基于Luban算法的压缩: 类比微信将图片压缩至不失真的图片大小

效果图:

  1. 像素压缩:从质量层面进行相关压缩

2. 质量压缩: 设定固定的长和宽,然后进行压缩

3. 基于Luban算法的压缩:类比微信将图片压缩至不失真的图片大小

使用方法:

然后在添加相关的依赖关系(不是根目录)

   dependencies {implementation 'com.github.heynchy:CompressImage:v0.1.2'}

代码中的设置

注意:对相关图片进行压缩时要确保手机的存储权限已经获得

1. 质量压缩 (注意使用时要确保运行在主线程中,包括处理返回信息时)

   // TODO 进行质量压缩/***   确保该方法执行在主线程中*/runOnUiThread(new Runnable() {@Overridepublic void run() {/*** 参数解析:* filePath: 要压缩图片的绝对路径* savePath: 压缩图片后的保存路径* maxSize: (例如1024)期望压缩的图片<= maxsize;单位为 KB*/CompressImage.getInstance().imageMassCompress(filePath, savePath, 1024,new CompressMassListener() {@Overridepublic void onCompressMassSuccessed(final String imgPath) {// 返回值: imgPath----压缩后图片的绝对路径runOnUiThread(new Runnable() {@Overridepublic void run() {/*** 执行相关的UI操作确保在主线程中进行*/Bitmap bitmap = PermissionUtil.getLoacalBitmap(imgPath);mImagePressIv.setImageBitmap(bitmap);mMassPressTv.setText("压缩后质量: " + FileSizeUtil.getFileOrFilesSize(imgPath));}});}@Overridepublic void onCompressMassFailed(final String imgPath, final String msg) {/*** 返回值: imgPath----原图片的绝对路径*  msg----返回的错误信息*/runOnUiThread(new Runnable() {@Overridepublic void run() {/*** 执行相关的UI操作确保在主线程中进行*/Toast.makeText(MassImageActivity.this, msg, Toast.LENGTH_LONG).show();}});}});}});

2. 像素(尺寸)压缩

  // TODO 进行像素压缩/*** 参数解析:* filePath: 要压缩图片的绝对路径* savePath: 压缩图片后的保存路径* maxWidth: 期望压缩后图片的宽度(像素值)* maxHeight: 期望压缩后图片的高度(像素值)*/CompressImage.getInstance().imagePixCompress(filePath, savePath, 100, 100,new CompressPixListener() {@Overridepublic void onCompressPixSuccessed(String imgPath, Bitmap bitmap) {/*** 返回值: imgPath----压缩后图片的绝对路径*        bitmap----返回的图片*/mImagePressIv.setImageBitmap(bitmap);mMassPressTv.setText("压缩后质量: " + FileSizeUtil.getFileOrFilesSize(imgPath));}@Overridepublic void onCompressPixFailed(String imgPath, String msg) {/*** 返回值: imgPath----原图片的绝对路径*        msg----返回的错误信息*/Toast.makeText(PixImageActivity.this, "压缩失败", Toast.LENGTH_SHORT).show();}});

3.基于Luban算法的图片压缩(可得到体积小,图片不失真的图片,类比于微信)

   // TODO 进行Luban算法压缩/*** 参数解析:* filePath: 要压缩图片的绝对路径* savePath: 压缩图片后的保存路径*/CompressImage.getInstance().imageLubrnCompress(filePath, savePath, new CompressLubanListener() {@Overridepublic void onCompressLubanSuccessed(String imgPath, Bitmap bitmap) {/*** 返回值: imgPath----压缩后图片的绝对路径*        bitmap----返回的图片*/mImagePressIv.setImageBitmap(bitmap);mMassPressTv.setText("压缩后质量: " + FileSizeUtil.getFileOrFilesSize(imgPath));}@Overridepublic void onCompressLubanFailed(String imgPath, String msg) {/*** 返回值: imgPath----原图片的绝对路径*        msg----返回的错误信息*/Toast.makeText(LubanImageActivity.this, msg, Toast.LENGTH_LONG).show();}});

GitHub 地址: 点击打开链接

Android CompressImage图片压缩工具类介绍相关推荐

  1. android图片压缩工具类

    好久没写博客了,一方面是因为最近找了家实习单位,很累基本上下班后就没有打不起精神去学习,另一方面我自己觉得写博客确实有点耗时间,趁着周六周日想花点时间研究下fresco,picass,Glide等框架 ...

  2. 一个好用的android图片压缩工具类

    <span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255) ...

  3. 整合的图片压缩工具类ImageTools

    根据网上找的资料和自己用到的地方进行修改的图片压缩工具类,有什么不对的地方请见谅,源码如下: public final class ImageTools {/*** Transfer drawable ...

  4. java图片压缩工具类

    java图片压缩工具类 PicCompressUtil.java import java.io.ByteArrayInputStream; import java.io.ByteArrayOutput ...

  5. java图片压缩工具类(指定压缩大小)

    1:先导入依赖 <!--thumbnailator图片处理--><dependency><groupId>net.coobird</groupId>&l ...

  6. Java图片压缩工具类(递归压缩到指定大小范围)

    Java图片压缩工具 工具类使用场景 公司做人脸识别项目时候需要上传学生.家长.教师.访客的正面照图片,但是人脸识别机器有限制只接收200KB-1M的图片,所以必须做图片压缩到指定范围大少. APP上 ...

  7. Android的图片压缩类ThumbnailUtils

    从Android 2.2开始系统新增了一个缩略图ThumbnailUtils类,位于framework包下的android.media.ThumbnailUtils位置,可以帮助我们从mediapro ...

  8. android 自定义图片裁剪,uCrop介绍,我们自己的安卓版图片裁剪库

    在Yalantis,我们开发了许多不同的安卓app,根据我们的经验来看,几乎每个我们开发的应用都需要图片裁剪的功能.图片裁剪可以用于很多目的,从普通到头像调整到按比例裁剪以及图片变换等更复杂的功能. ...

  9. 安卓中鲁班图片压缩工具类

    implementation 'top.zibin:Luban:1.1.3' implementation files('libs/autobahn-0.5.0.jar')//压缩图片 public ...

最新文章

  1. Sweeter Than Fiction - Taylor Swift
  2. 数据显示Windows Phone市场份额依旧十分稳定
  3. vmwaretools安装
  4. LeetCode 687. 最长同值路径(二叉树,递归)
  5. BugkuCTF-MISC题cisco(writeup)
  6. OpenCV3学习(6.1)——边缘检测---Canny,Sobel,Prewitt,Robert,Laplace,LOG,DOG算子
  7. CAN笔记(23) CanFestival移植
  8. JAVA 多线程 JAVA 如何开发一个自定义线程池
  9. The dialect was not set. Set the property hibernate.dialect
  10. 微服务自动化部署(ansible playbook)干货之--zookeeper部署
  11. 华为交换机console口登录密码遗忘
  12. 微波工程学习1-电磁理论
  13. 常用等价无穷小以及泰勒公式
  14. SequoiaDB巨杉数据库许建辉:夯实数据库根科技,提升企业数智化转型的“人效”和“能效”...
  15. 微信支付当前页面的URL未注册问题[单页面]
  16. NSIS 头文件介绍_TextFunc.nsh(2)
  17. 海德汉角度编码器RCN727F与替代型号RCN8390F参数对比
  18. 安卓系统遥控器的映射具体过程相关文档
  19. 机器人的弊议论文_机器人的利与弊议论文
  20. 国产紫光FPGA实现DDS信号发生器

热门文章

  1. Flowable实用技巧-自动完成首个UserTask
  2. 原生js实现滑块拖动功能
  3. JAVA/C语言在线刷题-应声虫
  4. 小程序上格式化时间后 ios 真机显示 NaN
  5. 由PVID引起的故障现象
  6. python 使用BeautifulSoup爬取天天基金网主要数据
  7. vscode你最后一个编辑器_这几个插件,让你的 vscode更牛逼
  8. dede图片上传php,织梦cms增加栏目(栏目图片)上传缩略图功能
  9. 常用的Python的编辑器以及环境
  10. 用Python画国旗