压缩图片文件大小有什么好的方案?

2022-07-02 19:50:50 +08:00
 a132811

想寻找一款压缩图片大小的库。

背景: 我是用 vscode 中使用 paste image 给自己的 markdown 插入截图,大部分是 png 图,有些比较大需要压缩一下。

我谷歌搜索了一些压缩图片的方法:

  1. 使用 python 的 PIL.Image 自带的pic.save("a.png",optimize=True,quality=80)压缩, 35K 能到 27K ,压缩效率不太高( png quality 再降低不会有影响了)
  2. 改用 webp 格式:
    1. p.save('a.png.webp', 'webp', optimize = True, quality = 88)35K 压缩到 15K, 质量刚好能接受,不过体积希望尽可能小
    2. p.save('a.png.webp', 'webp', optimize = True, quality = 50)到 8k  图片质量有点糊了,不理想。
  3. 使用在线的 tinypng 压缩,输出格式 png ,压缩到了 8K ,质量非常好,没有失真
    1. 看了输出的格式,发现 tinypng 是把8-bit/color RGBA 转成了 8-bit colormap
    2. tinypng 提供 api 实现压缩,每月有免费额度,还是挺不错的
    3. 不过我的需求还是离线用,我找到一篇 colormap 文章,自己实现看起来要花很多时间 https://towardsdatascience.com/simple-steps-to-create-custom-colormaps-in-python-f21482778aa2

有更好的离线方案、库吗?

5985 次点击
所在节点    程序员
30 条回复
Dvel
2022-07-03 15:19:29 +08:00
$ brew install webp
$ cwebp input_file.png -o output_file.webp
msg7086
2022-07-03 15:42:58 +08:00
不同的图片压缩方法是不同的。
照片类颜色丰富的图片,走图片压缩算法,JPG WEBP HEIC AVIF 等等。
截图类颜色单一的图片,走调色板压缩算法,比如 PNG8 这样的。
Serino
2022-07-03 16:07:12 +08:00
我是用 Pinga 这个软件 png 压 webp ,选 lossy ,默认 80%的质量,最高压缩率

不知道为何 Pinga 压出来的 webp 图片质量比 Pillow 、OpenCV 或者 webp2jpg 要好,
用 Pillow 、OpenCV 或者 webp2jpg 转 jpg 或者 png 成 webp ,会丢失很多细节,
而 Pinga 选 lossy 和默认的 80%质量,压出来得 webp 和选无损压缩几乎没差,放大图片仔细看,噪点细节都还在,但图片大小要小很多

可惜这个软件不支持 jpg 直接转 webp ,我只能写了个 Python 脚本用 OpenCV ,先 jpg 无损转 png ,再转 webp
moult
2022-07-03 16:35:16 +08:00
用微信发一下就好了,压到你怀疑人生。
May725
2022-07-03 19:42:14 +08:00
Showfom
2022-07-04 00:11:22 +08:00
9Tpsaajk9rdBKH2U
2022-07-04 05:34:14 +08:00
iUploader 是一个免费开源的七牛云上传工具,可直接返回上传文件的地址;可以用作图床工具,进行图片的分享,当然不仅仅是图片。

软件介绍:
iUploader 主要功能将文件上传至七牛云,返回 Markdown 格式的链接到剪贴板

**引入 pngquant , 提高 png 图片的压缩比,减少流量的损失,快速完成图片的加载**

https://ichochy.com/posts/20190822.html

二年前个人开发的,功能还不是很完善,有些小 bug ,等我买了新电脑,再更新。
GitHub 上也有源码。
wolfie
2022-07-04 11:54:28 +08:00
@moult
微信会可能改你分辨率比例
jifengg
2022-07-04 13:40:20 +08:00
离线库同推荐 pngquant ,之前对比过好多命令行压缩 png 的,对比下来还是 pngquant 最好。
他是有损的,是所谓的“视觉无损”,也就是肉眼几乎看不出差异。
ArvinLiu
314 天前

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/863667

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX