Sea*_*Mik 6 python tkinter python-imaging-library python-3.x
我到处寻找设置图像大小的方法。图像被设置为一个 url。我在网站上发现了其他问题,但都没有奏效。
import urllib.request, base64
u = urllib.request.urlopen(currentWeatherIconURL)
raw_data = u.read()
u.close()
b64_data = base64.encodestring(raw_data)
image = PhotoImage(data=b64_data)
label = Label(image=image, bg="White")
label.pack()
Run Code Online (Sandbox Code Playgroud)
那是创建图像的代码,我将如何设置图像的大小
正如其他几个人提到的,在将图像附加到 tkinter 标签之前,您应该使用 PIL 调整图像大小:
from tkinter import Tk, Label
from PIL import Image, ImageTk
root = Tk()
img = ImageTk.PhotoImage(Image.open('img-path.png').resize(pixels_x, pixels_y)) # the one-liner I used in my app
label = Label(root, image=img, ...)
label.image = img # this feels redundant but the image didn't show up without it in my app
label.pack()
root.mainloop()
Run Code Online (Sandbox Code Playgroud)
调整大小的新语法:
调整大小((像素_x,像素_y))
所以代码可以是这样的:
from tkinter import Tk, Label
from PIL import Image, ImageTk
root = Tk()
file = '/home/master/Work/Tensorflow/Project/Data/images/p001.png'
image = Image.open(file)
zoom = 1.8
#multiple image size by zoom
pixels_x, pixels_y = tuple([int(zoom * x) for x in image.size])
img = ImageTk.PhotoImage(image.resize((pixels_x, pixels_y)))
label = Label(root, image=img)
label.image = img
label.pack()
root.mainloop()
Run Code Online (Sandbox Code Playgroud)
基于尼尔森的回答
如果可以接受简单的缩放,您可以添加这一行:
image = PhotoImage(data=b64_data)
image = image.subsample(4, 4) # divide by 4
# image = image.zoom(2, 2) # zoom x 2
label = Label(image=image, bg="White")
Run Code Online (Sandbox Code Playgroud)
否则,您应该使用 PIL 库,它提供更准确的工具。
| 归档时间: |
|
| 查看次数: |
24753 次 |
| 最近记录: |