这篇文章主要为大家介绍了AndroidStudio图片压缩工具ImgCompressPlugin使用实例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
正文
项目中集成了TinyPng,500张免费 几个key轮流使用 非常方便However,最近发现总是报错
Caused by: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
看到官网,2016年之后,已不再维护,只能转向新的压缩工具了。
于是集成ImgCompressPlugin
如何使用
在project的build.gradle中添加:
buildscript {
repositories {
jcenter()
}
dependencies {
...
classpath 'com.kingkingdu.plugin:img-compressor:1.1.5'
}
}
...
在Module的build.gradle文件:配置插件的设置
apply plugin: 'img-compressor'
repositories {
google()
maven { url "https://jitpack.io" }
}
imgCompressOpt{
way="pngquant"
test = false
whiteFiles=["text_pic1.png","test_pic2.jpg"]
minSize=5
tinyKeys=["your key"]
}
dependencies {
....
implementation fileTree(include: ['*.jar'], dir: 'libs')
....
}
点击Sync Now ,点击AS右侧Gradle找到image--imgCompressTask 双击即可执行压缩。

配置信息
- way:设置压缩的方式,支持3种常见的压缩,"tin.pngquot;,"pngquant","zopflip" 3选1,压缩方式选择及压缩效果见下图
- test:设置测试模式是否开启,false表示压缩后图片直接覆盖原图,true表示会把原图及压缩图输出到测试目录(Project/ImageCompressTest)
- whiteFiles:选填,白名单文件数组,不进行压缩
- minSize:单位为KB,设置原图大于某个数值才触发压缩,0表示全部都压缩
| 原图 | tinyPng | pngquant | zopflip |
|---|---|---|---|
| 压缩类型 | 有损 | 有损 | 无损 |
| 1.3M | 445K | 542K | 903K |
如何选择合适的压缩方式
- 如果项目本身原先使用的压缩方式与3种模式之一相同,则way选择相同的方式.
- 如果原先没有固定的压缩方式,那么推荐使用tiny或者pngquant,相对来说,tiny压缩时间较长,需要去官网申请key,但效果最好.pngquant压缩快速,效果也不错(但是tiny 目前不能用了on 2021.12.16)
最佳实践
引入本插件,配置测试模式test=false,初次执行imgCompressTask后,查看log,会打印类似日志:

压缩日志
通过日志可得知被压缩图片为Succeed,跳过图片为Skipped,图片压缩前后的大小比较。图片跳过的原因为图片已充分压缩,无需再压缩执行task后会在project目录下生成image-compressed-info.json文件,记录了已压缩的图片信息

通过Android studio自带的版本控制对比压缩前后图片是否失真,将失真图片(一般很少)加入白名单中,同时revert恢复原图
将image-compressed-info.json文件加入到版本控制,提交修改后的图片及json文件
在后续的版本开发中,团队中的任何人在开发过程中加入任何图片,或者等版本提测后,执行一次task即可压缩新版本引入的图片,旧版本的图片保持不变,也不会出现团队成员重复压缩的情况。
问题解答
Q1:如果在后续版本迭代过程中,已压缩的图片替换成新的图片,会不会忘记压缩了?答:不会.插件本身会通过MD5进行校验,而不是图片命名进行校验,故新图片也会执行压缩的Q2:支持的图片格式有哪些?答:支持png,jpg格式,webp暂时不支持Q3:对于组件化项目存在多个module,是否会扫描所有的module?答:会全部扫描,只要是application类型或者Android library类型都会被扫描到(实测并不是全部扫描)
项目地址
https://gitee.com/Li_Shuaihua/ImgCompressPlugin/#/Li_Shuaihua/ImgCompressPlugin/blob/master/README-zh-rCN.md
以上就是AndroidStudio图片压缩工具ImgCompressPlugin使用实例的详细内容,更多关于AndroidStudio图片压缩的资料请关注编程学习网其它相关文章!
本文标题为:AndroidStudio图片压缩工具ImgCompressPlugin使用实例
基础教程推荐
- Android多返回栈技术 2023-04-15
- IOS应用内跳转系统设置相关界面的方法 2022-11-20
- IOS 播放系统提示音使用总结(AudioToolbox) 2023-03-01
- Android中的webview监听每次URL变化实例 2023-01-23
- android studio按钮监听的5种方法实例详解 2023-01-12
- Flutter绘图组件之CustomPaint使用详解 2023-05-12
- iOS开发教程之XLForm的基本使用方法 2023-05-01
- Flutter手势密码的实现示例(附demo) 2023-04-11
- 解决Android Studio突然不显示logcat日志的问题 2023-02-04
- Android开发使用RecyclerView添加点击事件实例详解 2023-06-15
