【发布时间】:2021-12-29 14:46:50
【问题描述】:
我在 python 中制作了一个自定义图像查看程序,因为我找不到一个可以按照我想要的方式工作的程序,而且我知道它至少可以用于处理透明 gif,但现在它不能。效果似乎从 gif 到 gif 到 gif 不同,但它始终是透明度的问题。使用 .save 进行一些测试后,我发现 PIL 图像完全没问题,我可以将其导出为 png,绝对没有问题且透明度完美。话虽如此,尽管制作了该程序,但我从未真正学习过 Tkinter,因为除了简单的画布清除和更新之外,我不需要使用它,所以我不知道如何在 PIL 之外进行测试。我认为问题应该在这些方面:
image = ImageTk.PhotoImage(GifFrameSized) #GifFrameSized is the resized GIF
imagesprite = canvas.create_image(show.w/2,show.h/2,image=image) #w and h are the width and height of the monitor
root.update_idletasks()
root.update()
canvas.pack()
我真的不知道问题是如何来自这些问题,但我能够使用 PIL 将框架的 png 保存在“image = ImageTk.PhotoImage(GifFrameSized)”上方的行中,它看起来很好,所以我必须想象它在那些行中的某个地方。
【问题讨论】:
-
您提到了一个您从未向我们解释过的问题,也没有给出重现它的代码,也没有在您的问题中显示示例。这个问题在这个状态下如何解决?请查看您的问题并添加解决问题所需的信息。
-
我真的无法解释它,因为正如我所说,它因 gif 不同而不同,具体取决于它们的编码方式。我给出了导致问题的代码段,并且我测试过的每个透明的 sinlge gif 都有问题。
-
看看我的魔法玻璃球告诉我你用新的图片覆盖了你的图片并且不更新图片。另见When should I use root.update() in tkInter for python
-
那么似乎是gif的问题,仅仅因为您可以将其导出为png并不意味着它是透明的或上面的问题
-
尝试使用
GifFrameSized = GifFrameSized.convert("RGBA")将GIF图像的模式转换为“RGBA”。
标签: python tkinter python-imaging-library