虫子的gif动图制作

虫子的gif动图制作

李兴球Python精灵模块gif动图制作

李兴球Python精灵模块gif动图制作
本程序在虫子画图形的时候不断地截图到内存中,最后把所有内存中的图形合成一个gif图形。这个程序关键是用到了屏幕的save方法。它会把虫子画图屏幕截为pillow图形对象。以下是所有代码:

"""
   gif动图制作.py
   本程序演示了如何把虫子画图形的过程保存为gif动图。
   注意在本程序中使用了pillow模块的Image类。
   这是由于sprites模块已经给导入了。
   本程序用到了Python精灵模块,可以用下面命令在cmd窗口中快速安装。
   pip install -i https://pypi.tuna.tsinghua.edu.cn/simple sprites  --upgrade
"""
import os
from sprites import *

frames = []                              # im帧列表,以便保存所有截的图形

screen = Screen()                        # 新建屏幕 
bug = Sprite()                           # 新建角色 
bug.color('red')                         # 画笔为红
bug.pensize(10)                          # 画笔粗细为10
bug.pendown()
# 下面是画图形,这里只是简单画一个红色的图,你可以修改为画其它图形,
# 每移动或旋转了角色,都可以保存当前的屏幕到frames列表。
for x in range(8):                       # 在范围8迭代x 
    for y in range(4):                   # 在范围4迭代y
        bug.fd(100)                      # bug前进100个单位
        frames.append(screen.save())     # 添加截屏为帧到列表中
        bug.rt(90)                       # 右转90度
        frames.append(screen.save())     # 添加截屏为帧到列表中
    bug.rt(45)                           # 右转45度  
    frames.append(screen.save())         # 添加截屏为帧到列表中
size = frames[0].size                    # 图像尺寸
print(size)

im = frames[0]                           # 第一帧
im.save('out.gif', save_all=True, append_images=frames[1:],
        optimize=False, duration=200, loop=0)

# 如果像下面这样,那么第一帧就是白色的。
#im = Image.new("RGBA",size,color=(255,255,255,0))  # 新建im图像对象  
#im.save('out.gif', save_all=True, append_images=frames)

screen.mainloop()

李兴球

李兴球的博客是Python创意编程原创博客

评论已关闭。