我似乎在让 gif 的背景变得透明时遇到了一些问题。我附上了下面的代码:
class MyLabel(Label):
def __init__(self, master, filename, delayms):
im = Image.open(filename)
seq = []
self.delay = 10
try:
while 1:
seq.append(im.copy())
im.seek(len(seq)) # skip to next frame
except EOFError:
pass # we're done
try:
self.delay = delayms#im.info['duration']
except KeyError:
self.delay = 10
first = seq[0].convert('RGBA')
self.frames = [ImageTk.PhotoImage(first)]
canvas = Canvas(master, bg="red", width=500, height=400)
canvas.place(relx=0.5, rely=0.5, anchor='center')
Label.__init__(self, canvas, image=self.frames[0])
temp = seq[0]
for image in seq[1:]:
temp.paste(image)
frame = image.convert('RGBA')
self.frames.append(ImageTk.PhotoImage(frame))
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)
我做了一些研究并尝试了不同的解决方案,但似乎没有什么对我有用。