V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
azev
V2EX  ›  问与答

gif 动画是不是很难压缩?

  •  1
     
  •   azev · 2023-04-27 09:55:38 +08:00 · 2000 次点击
    这是一个创建于 575 天前的主题,其中的信息可能已经有所发展或是发生改变。

    试用了 pillow 的 quantize 和 save ,调了好些参数也没怎么减小。

    16 条回复    2023-04-28 11:50:28 +08:00
    heyjei
        1
    heyjei  
       2023-04-27 09:58:31 +08:00
    是的,可以试着转成 mp4
    kinglisky
        2
    kinglisky  
       2023-04-27 10:04:23 +08:00   ❤️ 1
    是的,同样是动图可以转 webP 格式或者 Apng 格式,不过最好是转成视频。

    前段时间刚小小研究了下: https://juejin.cn/post/7221557738537549879
    MozzieW
        3
    MozzieW  
       2023-04-27 10:40:41 +08:00
    试一下 gifsicle ,能优化的技巧它都实现了。
    从原理上看,压缩率不如视频,还不支持硬件加速。
    GIF 格式应该被淘汰,但是使用又太广泛了。

    webp 和 apng ,要考虑使用场景,很多 App 都不支持。
    kidzgy
        4
    kidzgy  
       2023-04-27 10:45:08 +08:00   ❤️ 1
    推荐 https://ezgif.com/optimize 我经常用它来压缩 gif ,用来制作微信表情。

    用 ffmpeg 截取视频某段作为 gif ,再用 ScreenToGif 编辑需要的帧、大小,保存文件一般都比较大,再用 EZGIF 压缩,一般默认参数即可。
    shakoon
        5
    shakoon  
       2023-04-27 10:46:28 +08:00
    gif 压缩率是很低的,它的算法决定了大小不可能很小。还是要看你的用途来确定要不要换个格式。
    b821025551b
        6
    b821025551b  
       2023-04-27 10:53:09 +08:00
    gif 压缩的话,在 Photpshop 里操作比较直观,压缩的思路可以从这几点入手:
    1 、抽帧,如果一个文件有 30 帧,每秒 1 帧,可以每隔 1 帧删除掉,然后改为每 2 秒 1 帧;
    2 、减色,gif 最大支持 256 色,这也是为什么有些视频转换后效果失真;但是如果这个文件色彩没有那么多,可以试着减成 128 色、64 色,甚至有些动漫可以减到 32 色、16 色;
    3 、压缩像素,这也是最简单的,把尺寸缩小;

    补充一下:如果是用于 UI 界面使用的动画,推荐 lottie: https://airbnb.design/lottie
    aihimmel
        7
    aihimmel  
       2023-04-27 11:01:02 +08:00
    @kidzgy 这个其实也是楼上说的 gifsicle
    tony1890
        8
    tony1890  
       2023-04-27 11:05:36 +08:00   ❤️ 1
    是的。
    gif 的原理注定了很难压缩。
    gif 用的是变长 lzw 算法,属于无损压缩。
    这个变长 lzw 算法的压缩率和图片内容有关以及 lzw 最大编码表大小有关。我之前解码了一个 gif 文件,然后用自己实现的算法压缩,结果尺寸 x2 。因为那个 gif lzw 编码表最大 4093 ,而我用的 4096 。如何得到最佳编码表大小呢?反正我不知道。
    然后,可能还和量化之后的颜色表排序有关。对一个 gif 文件,我解码之后重新量化,颜色还是那些颜色,但颜色表顺序不同,然后大小就不一样了(我的更大)。

    视频相比于 gif 优势很大——颜色丰富,压缩比高。所以很多平台已经放弃 gif 了,比如知乎,gif 转成视频播放。
    azev
        9
    azev  
    OP
       2023-04-27 11:10:05 +08:00
    @tony1890 多谢,正在试着转换为 mp4 ,但出了点问题,小尺寸的 gif 转换后貌似有问题
    Thiece
        10
    Thiece  
       2023-04-27 11:16:16 +08:00
    为什么不是试试 avif 呢?
    xqdoo00o
        11
    xqdoo00o  
       2023-04-27 11:25:31 +08:00
    ezgif.com 转换
    duke807
        12
    duke807  
       2023-04-27 11:30:19 +08:00
    @Thiece

    跟 av1 编码的 webm 文件相比,avif 动图存在都意义是啥?
    lisxour
        13
    lisxour  
       2023-04-27 11:30:43 +08:00
    得看每帧的变化,如果变化不大的,后面那帧像素一样的地方就可以是透明的,这种优化可大幅减少 gif 大小,另外一种就是减色,这两种处理能很大程度的压缩大小
    duke807
        14
    duke807  
       2023-04-27 11:30:55 +08:00
    @duke807

    存在的
    ired
        15
    ired  
       2023-04-27 11:46:10 +08:00
    如果是在 web 应用,可以尝试转换为 webp 图片格式
    mydebug
        16
    mydebug  
       2023-04-28 11:50:28 +08:00
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2409 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 15:48 · PVG 23:48 · LAX 07:48 · JFK 10:48
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.