Python 对 gif 进行压缩

2017-07-12 11:33:41 +08:00
 lihsen

如题,如何对gif进行压缩。

我一开始想到的办法是利用pillowgif中的每一帧的取出来,对单帧图片进行压缩后,再调用方法将压缩后的保存回去,但是最后得到的gif没有变小,反而变大了。

后来我对单帧图片保存为pnggif格式,明显gif格式比png格式的大小要大多了,对图像编码这一块不是很了解,有知道原因的吗?或者有知道别的对gif进行压缩的办法。。。

9289 次点击
所在节点    Python
25 条回复
ivechan
2017-07-12 12:23:25 +08:00
GIF 压缩一般是跳过某些帧吧,比如 60 帧的你取 20 帧。
GIF 一般都已经被压缩了, 你单帧取出来再压缩也没有什么意义。
baichi
2017-07-12 13:16:05 +08:00
第 N+1 帧把第 N 帧重复的像素去掉(变成透明)试试
dylanninin
2017-07-12 13:32:56 +08:00
XiaoFaye
2017-07-12 14:29:36 +08:00
等全球网络都是万兆连接的时候这个估计就没什么意义了。
lihsen
2017-07-12 18:09:18 +08:00
@ivechan 现在问题就是,我单帧取出来之后,压缩过后单帧是变小了的,为什么最后整成**gif**的时候整个**gif**就变大了
tumbzzc
2017-07-12 18:17:17 +08:00
ffpmeg 不是更好吗
gnaggnoyil
2017-07-12 19:50:28 +08:00
GIF 单帧的存储方法都是固定的,你怎么还能把压缩过的单帧图片原封不动地扔进 GIF 容器里去?
awanabe
2017-07-12 19:54:36 +08:00
imageio 试试
lihsen
2017-07-12 23:45:14 +08:00
@tumbzzc 没用过这个,想先看一下能不能自己实现
lihsen
2017-07-12 23:47:09 +08:00
@gnaggnoyil GIF 单帧的存储方法是怎样的,我不是很了解这个,能不能再说详细点
lihsen
2017-07-12 23:50:29 +08:00
@awanabe 试过了,我先是将每一帧取出来保存为 png 格式,然后利用 imageio 将所有的帧整合保存到一起,最后生成的 GIF 的大小还是比所有 png 格式的帧的大小要大
gnaggnoyil
2017-07-13 00:28:18 +08:00
@lihsen 固定的调色板+LZ77,管你源是 PNG 还是 JPEG
lxy
2017-07-13 00:37:33 +08:00
NoAnyLove
2017-07-13 01:23:13 +08:00
根据使用工具的经验来看,压缩 GIF 主要是调整调色板、减少颜色,以及最重要的只保留变动的部分。感觉逐帧保存会不会破坏这个?
oglop
2017-07-13 04:03:27 +08:00
可以用 ffmpeg 或者是 gifsicle
oglop
2017-07-13 04:09:06 +08:00
kxxoling
2017-07-13 04:16:13 +08:00
试试 wand
hsmocc
2017-07-13 07:14:48 +08:00
@lihsen 以前看网络时候,书上好像说当前帧是 f1,下一帧 f2 的得到可能是 f1 加上相对于 f1 的变化,当 f2 和 f1 的差异非常小时这个变化量就非常小
est
2017-07-13 09:15:48 +08:00
https://en.wikipedia.org/wiki/Motion_JPEG

It is natively supported by the QuickTime Player, the PlayStation console, and web browsers such as Safari, Google Chrome, Mozilla Firefox and Microsoft Edge.


我想问为啥大家不用这个。。
zhuangtongfa
2017-07-13 09:49:12 +08:00
ffmpeg

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

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

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

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

© 2021 V2EX