在 Tkinter 中显示时,PIL 会扭曲动画 GIF 质量

问题描述 投票:0回答:1

我的代码有问题,而且对于使用

PIL library
还比较陌生。我的代码可以工作,但是 GIF 的质量非常差,我不确定如何修复它。我的代码如下:

import tkinter
from tkinter import *
from PIL import Image, ImageTk

window = tkinter.Tk()
window.title("****** Interface")
window.configure(background="white")

# Photo
class MyLabel(tkinter.Label):
    def __init__(self, master, filename):
        im = Image.open(filename)
        seq =  []
        try:
            while 1:
                seq.append(im.resize((480, 270)).copy())
                im.seek(len(seq)) # skip to next frame
        except EOFError:
            pass

        try:
            self.delay = im.info['duration']

        except KeyError:
            self.delay = 45

        first = seq[0].convert('RGB')
        self.frames = [ImageTk.PhotoImage(first)]

        tkinter.Label.__init__(self, master, image=self.frames[0])

        temp = seq[0].convert('RGB')
        for image in seq[1:]:
            frame = image.convert('RGB')
            temp.paste(frame)
            self.frames.append(ImageTk.PhotoImage(temp))

        self.idx = 0

        self.cancel = self.after(self.delay, self.play)

    def play(self):
        self.config(image=self.frames[self.idx])
        self.idx += 1
        if self.idx == len(self.frames):
            self.idx = 0
        self.cancel = self.after(self.delay, self.play)        


lbl = MyLabel(window, '*****.gif')
lbl.pack(anchor="center")
window.mainloop()

我已经查看了链接中提供的解决方案 使用 PIL 在 Tkinter 中显示动画 GIF ,但是我无法让它们工作。请帮忙。

python-3.x tkinter python-imaging-library animated-gif
1个回答
0
投票

我也有同样的问题。你说 gif 需要未经优化。你是怎么做到的?

© www.soinside.com 2019 - 2024. All rights reserved.