您当前的位置:首页 > 计算机 > 编程开发 > Python

GIF动图过大?Python轻轻松松压缩GIF图大小

时间:04-06来源:作者:点击数:

我们在图片制作过程种,如果产生的GIF动图过大,需要要压缩 GIF 文件的大小,可以使用一些外部工具或python库来优化 GIF 文件的帧和颜色,以达到GIF动图变小的目的。

在这里插入图片描述

下面是一种使用Python中的GIF优化库gifsicle来压缩 GIF 文件的方法:

安装gifsicle

安装gifsicle的官方网址:https://www.lcdf.org/gifsicle/

适用于Windows的下载链接:https://eternallybored.org/misc/gifsicle/

在这里插入图片描述

import subprocess

在Python中使用subprocess库来运行gifsicle来压缩 GIF 文件1

import subprocess
# 指定输入和输出文件名

input_file = "snowfall.gif"
output_file = "compressed_snowfall.gif"

# 使用 gifsicle 压缩 GIF 文件
subprocess.run(["gifsicle", "-O3", "--lossy=80", input_file, "-o", output_file])

print(f"压缩后的 GIF 文件保存为: {output_file}")

“-03 ”标志用于启用最高级别的优化;

“–lossy=80” 用于设置损失程度为80(你可以根据需要调整此值)。

然后,将输入文件和输出文件的名称传递给gifsicle,并运行它来压缩 GIF 文件。

实际案例:

在这里插入图片描述

成功将snowfall由160M压缩不到2M大小。效果很显著。

压缩报错处理

在对GIF动图处理过程种,可能遇到如下报错:

gifsicle: warning: too many colors, using local colormaps
  (You may want to try '--colors 256'.)

针对这个报错,需要修改代码,增加 --colors 参数并设置为 256,这允许 GIF 使用最多 256 种不同的颜色,以更好地表示图像。

也可以根据你的需求调整 --colors 参数的值。

import subprocess

# 指定输入和输出文件名
input_file = "snowfall.gif"
output_file = "compressed_snowfall.gif"

# 使用 gifsicle 压缩 GIF 文件
subprocess.run(["gifsicle", "-O3", "--lossy=80","--colors", "256",input_file, "-o", output_file])

print(f"压缩后的 GIF 文件保存为: {output_file}")

当我们在使用 gifsicle 时遇到 “too many colors” 的警告时,这表示 GIF 图像包含了超过默认颜色数的颜色。默认情况下,gifsicle 尝试使用局部颜色映射(local colormaps)来减小文件大小,但当颜色数量太多时,它会给出警告建议使用更多颜色。依照建议使用 “–colors”,“256” 参数来增加颜色数量,这允许使用更多的颜色来编码图像。


  1. 需要将下载的gifsicle和python文件相同的目录下↩︎
方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门