Python:使用PIL进行动画

6 投票
2 回答
7985 浏览
提问于 2025-04-15 19:21

我想要一个动画图片。不过我需要一个刷新功能,因为每次用plt.show()的时候,它总是会打开一个新窗口。有没有人能给点建议?谢谢!

import numpy as np
import scipy
from scipy import *
import matplotlib.pyplot as plt

#array
aa = []
for x in range(44):
    aa.append([])
    for z in range(44):
        aa[x].append(3*sin(x/3.0)+2*cos(z/3.0))

b = aa
plt.imshow(b)
plt.show()

time = 0
dt = 0.1
while(time<3):
    b = sin(aa)
    time += dt

2 个回答

5

除了关于图形用户界面工具包的其他回答,你还可以先保存图片,然后再制作动画。

如果图片的颜色不多,PIL可以直接保存为gif格式,具体可以参考这篇博客

相关部分如下:

frames = []
x, y = 0, 0
for i in range(10):
    new_frame = create_image_with_ball(400, 400, x, y, 40) # your imgs here
    frames.append(new_frame)
    x += 40 # you wont need these
    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)

这段代码可能需要根据你的需求进行修改,不过我已经添加了一些注释,帮助你入门。

8

PIL主要是用来处理图片的,比如编辑图片,而不是用来制作动画或显示图片。如果你想做这些,建议你使用一些图形用户界面工具包或者多媒体库,比如pyglet或者pygame

撰写回答