我正在尝试让Tkinter从URL显示很大的图像,但是该图像没有完全显示在窗口中。我希望无需滚动即可查看整个图像。我已经尝试过调整大小,但这似乎并没有太大的作用。任何帮助,将不胜感激。img链接:https : //web2.hirez.com/smite-media//wp-content/uploads/2017/07/Fafnir.jpg
我的代码:
from tkinter import *
import io
import urllib.request
from PIL import ImageTk, Image
canvas = Tk()
page = urllib.request.urlopen("https://web2.hirez.com/smite-media//wp-content/uploads/2017/07/Fafnir.jpg")
background = Image.open(io.BytesIO(page.read()))
tkimage = ImageTk.PhotoImage(background)
panel1 = Label(canvas, image=tkimage)
panel1.grid(ipadx=0, ipady=0, sticky=E)
mainloop()
使用size
属性和resize(w, h)
方法做您想要的。这是一个示例,将图像大小减半:
from tkinter import *
import io
import urllib.request
from PIL import ImageTk, Image
canvas = Tk()
page = urllib.request.urlopen("https://web2.hirez.com/smite-media//wp-content/uploads/2017/07/Fafnir.jpg")
background = Image.open(io.BytesIO(page.read()))
width, height = background.size
background = background.resize((width // 2, height // 2))
tkimage = ImageTk.PhotoImage(background)
panel1 = Label(canvas, image=tkimage)
panel1.grid(ipadx=0, ipady=0, sticky=E)
mainloop()
注意:不要使用width / 2
,width // 2
而要使用-否则,如果将浮点数作为除法结果,则将导致TypeError。
注意1:如果输出图像的质量对您来说比速度更重要,请使用background.resize((width // 2, height // 2), Image.ANTIALIAS)
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句