首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >python中的Imageio :压缩gif

python中的Imageio :压缩gif
EN

Stack Overflow用户
提问于 2017-03-31 20:21:11
回答 2查看 7.4K关注 0票数 18

有没有办法在用python中的imageio制作gif的同时压缩它?我制作了大约200张图片的gif,最后的文件是30MB。我更喜欢如果它是5-10MB。无论如何,图像是单色的,所以压缩应该没问题。有没有工具可以让我使用或者在imageio中指定?

下面是我用来制作gif的代码:

代码语言:javascript
复制
import os
import imageio as io
import re
#############################################################
#key to sort the file_names in order
numbers = re.compile(r'(\d+)')
def numericalSort(value):
    parts = numbers.split(value)
    parts[1::2] = map(int, parts[1::2])
    return parts
############################################################
file_names = sorted((fn for fn in os.listdir('.') if fn.startswith('surface')), key = numericalSort)

#gif writer
with io.get_writer('python_growth.gif', mode='I', duration=0.1) as writer:
    for filename in file_names:
        image = io.imread(filename)
        writer.append_data(image)
EN

回答 2

Stack Overflow用户

发布于 2019-09-22 18:26:16

面对同样的问题,我为gifsicle库创建了一个名为pygifsicle的包装器,可以按如下方式使用它:

代码语言:javascript
复制
from pygifsicle import optimize
optimize("path_to_my_gif.gif")

与pip上的其他包一样,用户可以通过运行以下命令来安装它:

代码语言:javascript
复制
pip install pygifsicle

imageio documentation中提供了使用该库的完整示例。

在安装Pygifsical时,如果你使用的是MacOS,你也会使用Brew自动安装gifsical库。对于其他系统,将提供一个分步指南,它基本上只是要求在Debian / Ubuntu上通过apt-get安装库(因为在软件包安装中不要求sudo似乎是一个好主意):

代码语言:javascript
复制
sudo apt-get install gifsicle

或者在windows上,你可以使用install one of the available ports

票数 3
EN

Stack Overflow用户

发布于 2021-09-12 05:03:19

另一种方法是在创建gif之前调整图像大小并降低图像质量。

代码语言:javascript
复制
from PIL import Image
# Resizing
image.resize((x, y), Image.ANTIALIAS)
# Reducing Quality
quality_val = 90
image.save(filename, 'JPEG', quality=quality_val)

将图像转换为压缩gif的完整代码

代码语言:javascript
复制
from PIL import Image
import glob
x = 250
y = 250
fp_in = 'path/to/images'
fp_in = 'path/to/gif/output'
q = 50 # Quality
img, *imgs = [Image.open(f).resize((x,y),Image.ANTIALIAS) for f in sorted(glob.glob(fp_in))] 
img.save(fp=fp_out, format='GIF', append_images=imgs,quality=q, 
         save_all=True, duration=15, loop=0, optimize=True)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43140560

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档