如何持续优化项目内的图片
时间:2022-07-26
本文章向大家介绍如何持续优化项目内的图片,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
由于包体积优化是一个持续的过程,但是人为手动调整图片等过于耗时,所以整和了下shell 指令,并提供一次分享,方便调整项目内的图片文件。 方案会是一个IOS/Android都能使用的方案,只要在当前文件夹下执行对应的脚本就可以。
技术选型问题
- PNG图片压缩 首先想的的是tinypng,但是由于是一个网站,同时调用对方接口需要收费,所以没有选择。之后调研到PngQuant,github.com/kornelski/p…,这个仓库可以由命令行执行,同时压缩比例大概也是在70%左右,同时配合python的情况下可以对我们的项目做很好的支持效果。具体内容细节可以参考juejin.im/entry/68449…
- png图片直接转化webP,和上面的原理机制是一样的,我们调用谷歌官方的cwebp指令,帮我们去对图片进行格式转化,新建同名文件夹存储,然后等使用方确定之后覆盖删除旧的png图片,当前应该只有安卓端会先使用,毕竟适配的较好。
- png图片转化jpg,如果一张图片没有Alpha通道的情况下,jpg图片会比png图片小很多,所以我们使用了python原生PIL,去把一张png图片更换成jpg。
- 同时提供最简单的测试工具给测试,让他们可以快速完成app的monkey测试。写了个简单的shell
所有的图片压缩逻辑都会判断新老大小是否发生变化 如果压缩之后质量没发生变化则不会更换资源
Cli如何使用
- 必要开发环境 Mac 同时安装了homebrew 没有安装的同学 看下这个www.jianshu.com/p/7071c1419…
- 首先先将github.com/Leifzhang/T… 仓库clone 到本地。
- 然后命令行跳转到对应的文件夹下面,执行下面的命令
chomd 777 install.sh
./install.sh
- 然后到你需要操作的文件下面,执行
toolman
- 然后在操作界面下选择你需要操作的指令
使用效果
通过反编译了下项目将工程还原 然后对单独项目进行整体压缩测试,然后分别将png压缩以及webp替换的压缩大小分享在下面。
- 使用pngquant 压缩所有图片之后效果大概是整个项目能压缩6.2m左右
- 使用webp压缩整个项目
- 计算机程序的思维逻辑 (11) - 初识函数
- Android WebView 调试方法
- Python开发微信公众号后台(系列一)
- Consul最常用的命令和接口api
- webpack的Hot Module Replacement运行机制
- 如何使用Node.js编写命令工具——以vue-cli为例
- SpringBoot编写自定义的starter
- webpack3新特性简介
- Python机器学习算法入门之梯度下降法实现线性回归
- IronPython 2.0 beta 5
- node.js如何制作命令行工具(一)
- (28) 剖析包装类 (下) / 计算机程序的思维逻辑
- Linux进程监控工具Supervisor简易使用教程
- (29) 剖析String / 计算机程序的思维逻辑
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 问题 1432: [蓝桥杯][2013年第四届真题]剪格子
- 问题 1426: [蓝桥杯][历届试题]九宫重排
- mock测试及jacoco覆盖率
- HDU 1495 非常可乐 最简单的的解决方案
- Performing Push Install adb: error: failed to get feature set: more than one 解决方案
- Shell Style Guide
- 10分钟搞定OAuth2.0授权服务
- IP 地址大解密
- 曾经,我以为我很懂MySQL索引
- AES加解密工具类AESUtil记录
- iOS逆向之使用unc0ver越狱 iOS13.5
- Spring @Autowired npe example:Why your Spring @Autowired component is null
- Spring JPA 查询创建
- 『Python动手学』Python处理.mat文件
- Swift 打开三方地图 腾讯地图、百度地图、高德地图、Apple 地图