iOS Python脚本 用pngquant 压缩PNG使 APP瘦身10M以上


前言

随着版本的迭代,业务增加,本地图片越来越多,APPipa包的Assets的大小有62.5M,对于APP的瘦身,图片的压缩也是很重要的一部分。

因为PNG 图片是项目中数量最多的图片,一般是PNG图片手动处理压缩,但是因为操作麻烦,工作量大,容易出现忘记某个目录下图片压缩,图片失真问题,选择什么形式压缩,用什么工具压缩,都要考虑清楚。

查找了很多资料,也踩了很多的坑,因为不想手动操作压缩图片,所以首选可以用命令批量压缩的工具,上网查找定位了一下三款:optipng 无损压缩图片,tinypng有损批量压缩图片,pngquant有损压缩图片等压缩工具都试过,这篇文章记录了整个过程和最终的解决方案。

压缩工具选择

optipng

1.简介

OptiPNG是一种PNG优化器,可将图像文件重新压缩为更小的尺寸,而不会丢失任何信息。该程序还将外部格式(BMP,GIF,PNM和TIFF)转换为优化的PNG,并执行PNG完整性检查和更正。如果您想了解PNG优化的工作原理,请看OptiPNG官网

2.使用方法 

$ optipng *.png

虽然optiPNG 可以设置压缩比例系数,但是我已经设置最高,可以压缩比例还是不高,也因为是无损压缩,大小大约可以减少20%左右,因为并没有减少很多,所以想看下有损压缩的tinypng,虽然是有损压缩,但是让设计师验收压缩过的图片,肉眼看不出有什么变化,tinypng图片压缩通过,下面介绍tinypng。

tinypng

1.原理,根据官网https://tinypng.com/介绍,主要是使用Quantization的技术,通过合并图片中相似的颜色,通过将 24 位的 PNG 图片压缩成小得多的 8 位色值的图片,并且去掉了图片中不必要的 metadata(元数据,从 Photoshop 等工具中导出的图片都会带有此类信息),这种方式几乎能完美支持原图片的透明度。

2.在线API压缩,tinypng 压缩图片大小可以减少70% 左右,压缩过的图片UI验收通过,但是由于需要申请api-key 而且要求一个月不能超过500张图片压缩,实际脚本我也试过,超过430张也就报错,因为我们工程目前有1000多张图片,需要申请3个api-key , 这还不是重点,重点是因为每次循环扫描都是从工程目录的第一张开始,所以如果不做额外操作,即使运行3遍,但是压缩的永远都是前面的430张图片,重复压缩的问题,数量限制的问题,放弃了这个方案。上网了解到pnguant 压缩图片大小可以减少70%左右,压缩过的图片UI验收通过,并且没有数量的限制,下面介绍pngquant。

pngquant

根据官网pngquant介绍,pngquant是国外的一个有损的PNG压缩开源库,提供了命令行形式和源码库形式。将24位或32位的RGBA PNG图转换成8位PNG图并保留透明度通道。通过这个库的转化可以显著减少png文件大小(通常减少70%)。生成的图片文件可以兼容所有现代web浏览器,在IE6下比24-bit PNGs也有更好的表现,具有快速模式,用于处理大批图片。源码库地址为pngquant

pngquant 安装

(1).git clone git://github.com/pornel/pngquant.git 

(2).cd pngquant;

(3). make 回车后就会看到一大串命令,然后看到生成pngquant执行文件以及其他相关文件,即安装成功;

(4).可以用pngquant -h 检查是否安装成功。

(5). “pngquant -f --ext .png --quality 50-80 ”主要是压缩图片的命令。

PS:需要了解更多关于pngquant 请参照官网,

工具选择确定,实验也通过,那就开始批量压缩,下面是python脚本功能简介,文章末尾有脚本链接的下载地址。

python 脚本

本地运行脚本,主要功能包括:

   1.会压缩目录下的所有png 的图片;

   2.本地记录一份压缩过的所有图片信息;

   3.如果是相同名字的图片替换过,有三种情况:

        1两种图片大小相同,不会操作;

        2.新的图片小于旧的图片,不会压缩,更新图片信息;

        3.新的图片大于旧的图片,会压缩,更新图片信息;

     4.如果是新增,直接压缩,更新存储记录;

     5.用了这个脚本,我们ipa 包的Assets大小较少11M。

使用:

python PngquantPicture.py

可以下载脚本,git链接:链接地址 https://github.com/beiyangguangsumiao/python-iOS-pngquant-PNG- 用到根目录下,运行一遍就好了。

您的工程需要优化,减少安装包的大小啦~

PS:自学python 脚本语句,走了很多坑,有什么问题请多多指教 ,如果有帮助,请关注,点击喜欢,您的喜欢,是对我努力的最大肯定。谢谢~

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,948评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,371评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,490评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,521评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,627评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,842评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,997评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,741评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,203评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,534评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,673评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,339评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,955评论 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,770评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,000评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,394评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,562评论 2 349

推荐阅读更多精彩内容

  • 本文会不定期更新,推荐watch下项目。如果喜欢请star,如果觉得有纰漏请提交issue,如果你有更好的点子可以...
    天之界线2010阅读 18,200评论 19 153
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,799评论 25 707
  • 用两张图告诉你,为什么你的 App 会卡顿? - Android - 掘金 Cover 有什么料? 从这篇文章中你...
    hw1212阅读 12,699评论 2 59
  • 我们都知道价值投资,还有趋势投资,短线投机,长线投资,不论债券、房产、股票都有其内在价值。其实只要是投资多少都有“...
    苏清文阅读 218评论 0 1
  • 大家好!我家养着两只小鸡,特别可爱。或许从我家搬走,一直到现在还保留着它的一点图片呢!我发给大家看看吧!图片没...
    起名太难了吧阅读 341评论 0 0