| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 移动开发 -> iOS包体积优化-图片优化 -> 正文阅读 |
|
[移动开发]iOS包体积优化-图片优化 |
文中提到的优化措施,编写了python自动化脚本,适用于iOS项目。 地址:GitHub - dongzhixuanyuan/imagesOptimize: Optimize images to decrease the App package size. 目录 进行iOS App包体积优化工作时,图片处理的可优化空间最高,投入产出比最高。主要有如下几个优化方向: 图片复用App架构模式 ????????采用模块化设计模式,独立功能的代码放在一个Pod中,代码层面做到了分层设计,但是因为历史遗留问题,图片资源是未完全模块化的。存在2个问题: UIImageView的图片资源访问方式
鉴于以上的图片访问规则,设计出公共图片库的访问逻辑,如下 相似图片检测: ?????使用"感知哈希算法"(Perceptual hash algorithm),对每张图片生成一个"指纹"(fingerprint)字符串,然后比较不同图片的指纹。结果越接近,就说明图片越相似。具体可参考相似图片搜索的原理 - 腾讯云开发者社区-腾讯云.通过对项目内的图片进行比较,找出所有相似的图片。 这2个问题都有了对应的解决方案,只需要将相似图片迁移到公共库中,各Pod都引用公共库的图片即可。当然,这里面涉及到项目中现有UIImage的访问方式修改,可以通过脚本来进行自动化处理。 无用图片清理????????字符串搜索匹配工具,推荐使用Silver Searcher,其作者介绍,该搜索工具比Unix的ack工具搜索速度快34倍。对图片名称进行全局字符串匹配查找,高性能的工具至关重要。经过此项,通用包体积下降24.5M。 图片压缩????????Asset?Catalog是Apple早在2015引入的图片、颜色管理工具,引入的最初目的是为了让图片能自动适配不同尺寸的设备。后来引入的黑暗模式,也是通过Asset?Catalog,让开发者能简单地适配。 Asset?Catalog有如下3项优势
????????对于Asset?Catalog管理的图片,如果仅仅对图片做无损压缩,虽然能减小原始图片的大小,但是会发现最终的ipa包体积并不会减小。这是因为Xcode编译时,会对图片再次处理,处理成CgBI格式,导致之前针对图片做的无损压缩工作全部失效。最终,只能通过有损压缩的方式,才能最终实现ipa包中的图片占用体积下降。 ????????经过调研,把压缩率、自动化程度、压缩质量作为评估标准,选择了ImageOptim作为压缩工具。各项压缩工具的压缩指标,可参考评估报告。 使用ImageOptim工具,有损压缩质量80%,压缩率测试结果如下:
对比测试2款图片压缩工具(ImageOptim和pngquant),结果如下:
结论是,在选择相同压缩质量的条件下,pngquant压缩率更好,但是最终的图片质量imageOptim更好,最终选择了ImageOptim作为压缩工具。 图 7左边为ImageOptim处理后的图片,右边是pngquant处理后的图片。 ImageOptim集成介绍:
针对这三项优化点,用python编写了自动化脚本,可用于项目迭代以及其他项目。地址:https://github.com/dongzhixuanyuan/imagesOptimize |
|
移动开发 最新文章 |
Vue3装载axios和element-ui |
android adb cmd |
【xcode】Xcode常用快捷键与技巧 |
Android开发中的线程池使用 |
Java 和 Android 的 Base64 |
Android 测试文字编码格式 |
微信小程序支付 |
安卓权限记录 |
知乎之自动养号 |
【Android Jetpack】DataStore |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/25 4:19:56- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |