Gradle入门到实战(二) — ImageOptimization安卓图片转换压缩插件

上一篇我们了解了Gradle的各个方面,本篇介绍一款安卓图片优化转换插件,目前已在项目中使用,可一键批量转换压缩图片,webp转换与png/jpg压缩就是那么简单

GitHub项目地址:ImageOptimization

ImageOptimization

安卓图片优化插件:能有效减少apk安装包大小,支持png/jpg转为webp,支持png图片有损无损压缩,支持jpg有损压缩

支持的os

macOSwindows10上已经测试通过,linux上暂时没测试。

引入ImageOptimization

在Project的build.gradle文件中:

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        ...
        classpath 'com.wanglei.image-optimization:optimization:1.0'
    }
}

在你想要优化的module的build.gradle文件中引入插件: 如在多个module使用则每个module都要引入插件

apply plugin:'com.wanglei.image-optimization'

同步之后会生成如下任务:双击执行任务即可

任务生成规则

imageOptimization_module名字_variant名字

配置项

在module的build.gradle文件中添加配置选项,配置插件优化的策略以及参数:

ImageOptimization{
    pluginStrategy = "compress"
    convertWebpQuality = 80
    jpegCompressQuality = 90
    appIconName = "ic_launcher"
    appIconRoundName = "ic_launcher_round"
    convertWebpType = "lossy"
    compressPngType = "lossless"
    pngCompressQuality = 79
}

ImageOptimization支持多项参数配置,灵活度高,可根据项目需要自己配置参数,可配置优先转为webp不能转换的在进行图片的压缩,同样你也可以配置只进行图片的压缩而不转为webp

配置项参数说明

参数是否必须参数配置参数说明
pluginStrategy 可配置"webp"或者"compress" 插件运行策略参数:如配置为"webp"则会将图片优先转为webp格式,如果不能转换或者转换失败或转换为图片更大则进行图片的压缩,如配置为"compress"则只进行图片的压缩不会转为webp,此参数如不配置默认为"compress"
convertWebpType 可配置"lossy"或者"lossless" webp转换类型参数:"lossy"转为webp采用有损转换模式,"lossless"转为webp采用无损模式,此参数默认为"lossy"
compressPngType 可配置"lossy"或者"lossless" png图片压缩类型参数:"lossy"为压缩png采用有损压缩模式,"lossless"为压缩png采用无损压缩模式,此参数默认为"lossy"
pngCompressQuality 可配置范围为[0,100] png图片压缩质量参数:默认为80,建议使用默认即可,此参数为compressPngType为"lossy"时起作用,也就是有损压缩才起作用
convertWebpQuality 可配置范围为[0,100] 图片转为webp的质量参数:默认为75,此参数为谷歌建议的参数,建议不要更改,转换webp有损模式下此参数才起作用
jpegCompressQuality 可配置范围为[84,100] jpg图片压缩质量参数:默认为84
appIconRoundName 项目app圆形启动图标的名字,不包括图片扩展名 如圆形启动图标为:icon_round.png,这里配置为icon_round
appIconName 项目app启动图标的名字,不包括图片扩展名 如启动图标为:icon.png,这里配置为icon

图片压缩效果对比

PNG图片

原图有损转为webp无损转为webplossy有损压缩lossless无损压缩
   
50.05k 15.28k 30.30k 13.64k 42.21k

jpg图片

原图有损转为webplossy有损压缩
7.91k 2.82k 5.17k

由于博客园不能上传webp图片,上图webp图片无法正常显示,可到GitHub中查看具体对比

额外说明

插件运行的时候会有相应信息打印出:

安卓对webp图片的支持


安卓不同sdk版本对webp的支持有所不同,具体如下:

sdk<14:不支持webp格式图片
14<= sdk <18:支持webp格式图片,但是不支持有透明通道的 webp格式图片
sdk >=18:有透明通过的webp图片也支持

此外如果想以无损方式将png/jpg图片转为webp,需要的sdk版本最小为18。

ImageOptimization对以上情况都做了适配,你只需放心使用即可

.9.png图片的处理

ImageOptimization插件对.9.png图片不做任何处理,既不转换也不压缩保持原样。

更多细节可到github查看:https://github.com/MISAYAWANGLEI/ImageOptimization

原文地址:https://www.cnblogs.com/leipDao/p/10439320.html