本程序在虫子画图形的时候不断地截图到内存中,最后把所有内存中的图形合成一个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()