使用PIL对gif W / O进行动画处理

时间:2019-02-24 22:24:55

标签: python-3.x tkinter tkinter-canvas

我目前正在尝试通过使代码将所有帧拖入我的代码并执行动画来使生活更轻松。我当前的代码是:

import time
from tkinter import *
import os



root = Tk()


imagelist = []
for file in os.listdir("MY-DIRECTORY"):
    if file.endswith(".gif"):
        imagelist.append(PhotoImage(file=str(os.path.join("MY-DIRECTORY", file))))


# extract width and height info
photo = PhotoImage(file=imagelist[0])
width = photo.width()
height = photo.height()
canvas = Canvas(width=width, height=height)
canvas.pack()
# create a list of image objects
giflist = []
for imagefile in imagelist:
    photo = PhotoImage(file=imagefile)
    giflist.append(photo)
# loop through the gif image objects for a while
for k in range(0, 1000):
    for gif in giflist:
        canvas.create_image(width / 2.0, height / 2.0, image=gif)
        canvas.update()
        time.sleep(0.1)
root.mainloop()

当我尝试执行文件时,它给了我这个我无法理解的错误。

Traceback (most recent call last):
  File "C:/Users/Profile/Desktop/folder (2.22.2019)/animation2.py", line 21, in <module>
    photo = PhotoImage(file=imagelist[0])
  File "C:\Users\Profile\AppData\Local\Programs\Python\Python37-32\lib\tkinter\__init__.py", line 3545, in __init__
    Image.__init__(self, 'photo', name, cnf, master, **kw)
  File "C:\Users\Profile\AppData\Local\Programs\Python\Python37-32\lib\tkinter\__init__.py", line 3501, in __init__
    self.tk.call(('image', 'create', imgtype, name,) + options)
_tkinter.TclError: couldn't open "pyimage1": no such file or directory

注意:我正在修改此代码以适合我的需求,而我并未编写。

我运行了一些打印语句以验证pyimage是否已上传到阵列,但是我无法弄清为什么它说如果已经将其上传到阵列,则没有这样的文件或目录。能否请大家发光些。

1 个答案:

答案 0 :(得分:1)

我发现我在代码下面创建了不必要的对象数组。 e。我最终通过删除它并让循环使用在代码giflist[]中先前创建的数组来解决了该问题。以下代码现在可以使用。

imagelist