📜  用Python创建和保存动画 GIF – Pillow

📅  最后修改于: 2022-05-13 01:54:29.580000             🧑  作者: Mango

用Python创建和保存动画 GIF – Pillow

先决条件:枕头

在本文中,我们将使用枕头库来创建和保存 gif。

GIF:图形交换格式 (gif) 是一种位图图像格式,由美国计算机科学家 Steve Wilhite 领导的在线服务提供商 CompuServe 的团队于 1987 年 6 月 15 日开发。

GIF 文件通常存储单个图像,但该格式允许将多个图像存储在一个文件中。该格式还具有可用于对图像进行排序以短时间显示每张图像然后将其替换为下一张的参数。简单来说,GIF 是一个动态图像。

Pillow: Pillow 用于Python的图像处理。 Pillow 是在 PIL(Python图像库)之上开发的。 Python 3 不支持 PIL,所以我们使用枕头。



此模块未预装Python。因此,要安装它,请在命令行中执行以下命令:

pip install pillow

让我们逐步创建一个gif:

步骤 1:首先我们导入我们对 PIL 模块的需求。

Python3
from PIL import Image, ImageDraw


Python3
images = []
width = 200
center = width // 2
color_1 = (0,255, 0)
color_2 = (255, 0, 0)
max_radius = int(center * 1.5)
step = 8


Python3
for i in range(0, max_radius, step):
    im = Image.new('RGB', (width, width), color_2)
    draw = ImageDraw.Draw(im)
    draw.ellipse((center - i, center - i,
                  center + i, center + i), 
                 fill=color_1)
    images.append(im)


Python3
images[0].save('pillow_imagedraw.gif',
               save_all = True, append_images = images[1:],
               optimize = False, duration = 10)


Python3
from PIL import Image, ImageDraw
  
images = []
  
width = 200
center = width // 2
color_1 = (0,255, 0)
color_2 = (255, 0, 0)
max_radius = int(center * 1.5)
step = 8
  
for i in range(0, max_radius, step):
    im = Image.new('RGB', (width, width), color_2)
    draw = ImageDraw.Draw(im)
    draw.ellipse((center - i, center - i,
                  center + i, center + i),
                 fill = color_1)
    images.append(im)
  
images[0].save('pillow_imagedraw.gif',
               save_all = True, append_images = images[1:], 
               optimize = False, duration = 10)


第 2 步:在我们输入圆的值后创建一个列表。 (0,255,0) 是绿色的颜色代码,(255,0,0) 是红色的颜色代码。

蟒蛇3

images = []
width = 200
center = width // 2
color_1 = (0,255, 0)
color_2 = (255, 0, 0)
max_radius = int(center * 1.5)
step = 8

第 3 步: for 循环用于创建动画图像。第 2 行代码用于设置正方形的值,该正方形包含红色,其边缘大小是 200.3 行用于创建正方形图像 .4 行用于绘制一个那个方形图像中的圆圈,那个圆圈的颜色是绿色的。

蟒蛇3



for i in range(0, max_radius, step):
    im = Image.new('RGB', (width, width), color_2)
    draw = ImageDraw.Draw(im)
    draw.ellipse((center - i, center - i,
                  center + i, center + i), 
                 fill=color_1)
    images.append(im)

第 4 步:保存 gif 图像。

蟒蛇3

images[0].save('pillow_imagedraw.gif',
               save_all = True, append_images = images[1:],
               optimize = False, duration = 10)

下面是完整的实现:

蟒蛇3

from PIL import Image, ImageDraw
  
images = []
  
width = 200
center = width // 2
color_1 = (0,255, 0)
color_2 = (255, 0, 0)
max_radius = int(center * 1.5)
step = 8
  
for i in range(0, max_radius, step):
    im = Image.new('RGB', (width, width), color_2)
    draw = ImageDraw.Draw(im)
    draw.ellipse((center - i, center - i,
                  center + i, center + i),
                 fill = color_1)
    images.append(im)
  
images[0].save('pillow_imagedraw.gif',
               save_all = True, append_images = images[1:], 
               optimize = False, duration = 10)

输出: