python制作动图、怎么运行_Python图片神器Pillow 快速创建 GIF 动图

之前有篇推文分享了如何在 Matplotlib 中生成 GIF 可视化图表,有一定的限制。本文将介绍如何用 Pillow 创建 GIF,可以将任意多张图片组合在一起,成为一张可播放的 GIF 图。

这种方式的适用场景更多,而且 PyPI 上也没有专门的库可以生成 GIF,所以推荐大家收藏本文的代码。

什么是 GIF 图?

GIF(“图形交换格式”)是一种位图图像格式,于1987年开发。

GIF基本上是一系列具有不同设置的图像,例如:循环播放

每帧的持续时间(图片)

其他…

GIF 也可以是静态图像。

Pillow

Pillow 是 Python 图形处理库 PIL 的一个分支,引入了许多更改和增强功能,以使API易于使用或处理更多图像格式和要求。支持打开、处理和保存多种不同格式的图片文件。

利用 Python 生成 GIF

安装 Pillow

第一步,我们需要先安装 Pillow:pip install Pillow

生成 GIF

我们生成一张红球往下坠落的 GIF 动图,作为文章示例。

首先,编写一个函数,利用 Pillow 在一张图片上画一个红球。fromPILimportImage,ImageDraw

defcreate_image_with_ball(width,height,ball_x,ball_y,ball_size):

img=Image.new('RGB',(width,height),(255,255,255))

draw=ImageDraw.Draw(img)

# draw.ellipse takes a 4-tuple (x0, y0, x1, y1) where (x0, y0) is the top-left bound of the box

# and (x1, y1) is the lower-right bound of the box.

draw.ellipse((ball_x,ball_y,ball_x+ball_size,ball_y+ball_size),fill='red')

returnimg

上述代码中,我们使用 Image.new 创建了一张 RGB 图片,并设置背景为白色,指定了图片大小。

接着,通过 ImageDraw 在图片中的指定参数位置,画了一个红色的圆圈。

所以,我们要做的就是创建多张图片,不断让红球往下坠。# Create the frames

frames=[]

x,y=0,0

foriinrange(10):

new_frame=create_image_with_ball(400,400,x,y,40)

frames.append(new_frame)

x+=40

y+=40

# Save into a GIF file that loops forever

frames[0].save('moving_ball.gif',format='GIF',append_images=frames[1:],save_all=True,duration=100,loop=0)

解释下上面的代码:初始化一个空列表 frames ,以及 0点坐标 x 和 y

用一个运行十次的 for 循环,每次创建一张 400x400 大小的图片,图片中红球的位置不同

更改红球的坐标,让红球沿着对角线往下坠

设置参数 format='GIF', append_images=frames[1:],保存 GIF 图片每帧图片播放100毫秒( duration=100)

GIF图片一直重复循环( loop=0,如果设置为 1,则循环1次,设置为2则循环2次,以此类推)

参考链接:https://blog.zhaytam.com/2018/08/21/creating-gifs-using-python-pillow/

文章来源于编程派 ,作者EarlGrey

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值