
1 vicalloy Feb 23, 2022 转 base64 ,大小会膨胀 1/3 。你确定转 base64 后最终压完后会更小? |
2 3dwelcome OP @vicalloy 是的,就算膨胀后,也还是会比更小。 我的资源是 27 个 PNG 文件,在 PS 里直出,总共 104,325 字节。尝试用 ZIP 压缩,以失败告终。 写了一点打包代码,把 27 个 PNG 打包成一个 JS 文件,体积为 139,647 字节。 这时候用 zip 再次压缩,最终大小为 88,165 字节。 |
3 3dwelcome OP 我想了一下,应该是 PS 里直出,PNG 压缩算法有水分。但是因为算法冲突缘故,ZIP 是没办法直接去处理。 转换成 BASE64 后,就相当于变了一个维度,ZIP 算法又能再次生效了。 我知道很多人不信,一开始我自己也不信。但事实就是能压。 7z 极限压缩大小在 82k ,最终压成 88k 也不奇怪。 |
4 LeeReamond Feb 23, 2022 @3dwelcome 生产意义是啥呢,你输出 webp,然后 base64 再压缩减小可能不错,png+zip 怎么搞都太大了 |
5 vicalloy Feb 23, 2022 压缩率和图片内容有关系的。用 base64 ,是将 27 张图片作为一个整体压缩。 比如同一张图片你复制 27 份,用 PNG 格式大小是 1x27 。你转成 base64 再压,27 张图片的大小还是近似于 1 。 |
6 ScepterZ Feb 23, 2022 有点意思,不过感觉是不是调调参数也能有类似效果,不懂压缩 |
7 3dwelcome OP |
8 weizhen199 Feb 23, 2022 对的,PS 上出的图片 PNG/JPG 都是,水分都感觉很大,至于是水分,还是别的地方出的被砍的太多。就不得而知了 |
9 vicalloy Feb 23, 2022 说大小近似 1 是不对的,算法还没有这么智能。 |
10 adoal Feb 23, 2022 @vicalloy 对……zip 是每个文件单独压缩后打包。可以测试一下原始 png 文件先打包(比如 tar ,甚至只为测试不为实用的话直接 cat 在一起)后再压缩。 |
11 rekulas Feb 23, 2022 "把 27 个 PNG 打包成一个 JS 文件" 你可以再尝试下只打包不 encode 试试能否继续压缩 |
13 noe132 Feb 23, 2022 png 的压缩也有压缩级别的。只是大部分软件并没有给你一个调节参数。建议用 apngopt 压一遍,用 7zip 15 iterarions 以上 |
14 tsanie Feb 24, 2022 我试了下 android sdk 里 paper-card 示例中的 5 张图片,应该是 png 压缩级别高且优化输出后的。 | 项目 | 大小 | | :---- | ----: | | 加起来大小 | 1,676,149 | | 7z 极限压缩 | 1,649,267 | | zip 打包 | 1,650,731 | | tar.gz | 1,651,711 | | base64 后 zip 打包 | 1,660,597 | | base64 后 tar.gz | 1,667,404 | 这个示例中 zip 直接打包反而是表现最好的了。 |
16 3dwelcome OP |