【发布时间】:2018-01-19 09:33:44
【问题描述】:
我想使用 TKinter 调整图像大小。 请注意,我不会为此使用 PIL。
我目前如何才能拥有这张效果很好的图片。
logo = PhotoImage(file="logo_dribbble-01_1x.PNG")
label = Label(f1,image=logo, borderwidth=0, highlightthickness=0)
label.pack()
我想调整此图片的大小,使徽标看起来更小。
我试过这样做,这是建议here
smallLogo = PhotoImage(file="logo_dribbble-01_1x.PNG")
smallLogo = smallLogo.subsample(2, 2)
smallLabel = Label(f1,image=smallLogo, borderwidth=0, highlightthickness=0)
smallLabel.pack()
但这会创建一个空标签而不显示图像。
我尝试使用 Photoshop 调整图像大小并使用该图像,然后使用该 .png 图像显示较小的图像,如下所示:
logo = PhotoImage(file="logo_dribbble-01_1xsmall.PNG")
smallLabel = Label(f1,image=smallLogo, borderwidth=0, highlightthickness=0)
smallLabel.pack()
但是,当我尝试运行代码时出现此错误
_tkinter.TclError: encountered an unsupported criticial chunk type "mkBF"
我该如何解决这个问题?
【问题讨论】:
-
总是将完整的错误消息(Traceback)放在有问题的地方(作为文本,而不是屏幕截图)。还有其他有用的信息。
-
顺便说一句:tkinter 不支持 PNG。要显示 PNG,您必须使用
Image,ImageTkfromPIL/pillow -
在某些平台上,Python 不支持 tk v8.6,因此它不是一个可移植的解决方案。例如,在 macOS 中,我们只能使用 tk v8.5,它不支持 PNG。我们需要将图像转换为 GIF,或者使用外部库,例如 Pillow。
-
@Nae 可能在最新的
TCL/TK或tkinter中有所改变,但旧版本不适用于 PNG,您在页面 PhotoImage 上有信息。或者目前 tkinter 在后台使用 PIL/pillow。 -
@Nae - 我找到了 Tk 8.6 的信息:Built-in PNG Image Support
标签: python image python-3.x tkinter photoimage