我们在图片制作过程种,如果产生的GIF动图过大,需要要压缩 GIF 文件的大小,可以使用一些外部工具或python库来优化 GIF 文件的帧和颜色,以达到GIF动图变小的目的。
下面是一种使用Python中的GIF优化库gifsicle来压缩 GIF 文件的方法:
安装gifsicle的官方网址:https://www.lcdf.org/gifsicle/
适用于Windows的下载链接:https://eternallybored.org/misc/gifsicle/
在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” 参数来增加颜色数量,这允许使用更多的颜色来编码图像。