【发布时间】:2020-07-23 19:29:04
【问题描述】:
我正在尝试使用 Tkinter 和 Pillow 打开图像文件并在 python 3.8 中显示它们,但是我的屏幕上的图像缩放错误。
import tkinter as tk
from PIL import Image, ImageTk
class ViewingWindow(tk.Frame):
def __init__(self, parent):
tk.Frame.__init__(self, parent)
self.image = None
self.canvas = tk.Canvas(self, width=500, height=500)
self.canvas.pack()
def setImage(self, img):
self.image = img
print(img.width())
print(img.height())
print(self.canvas["width"])
print(self.canvas["height"])
self.canvas.create_image(0, 0, anchor=tk.NW, image=img)
window = tk.Tk()
canvas = ViewingWindow(window)
canvas.pack()
img = Image.open("500x500.jpg")
img = ImageTk.PhotoImage(img)
canvas.setImage(img)
window.mainloop()
这是结果,显示为“显示实际大小”的 Windows 图像查看器和缩放 = 100% 的 Gimp:
4 个打印语句都显示“500”,系统的每个部分似乎都同意图像以 500x500 显示,但屏幕上的实际像素除外。无论出于何种原因,它被缩放到接近 750x750 的大小,到底是什么在缩放我的图像?这对于我尝试在 Tkinter 中打开的所有图像都是一致的,无论窗口大小和小部件大小如何。
在屏幕分辨率为 1920x1080 的 Windows 10 上测试。
【问题讨论】:
-
您应该添加图像
500x500.jpg,以便我们可以查看此文件是否在其他计算机上出现问题。或者,图像可能有其他信息,使其在 Canvas 上变得更大 - 例如有关 DPI 的信息。 -
你应该添加它 - 更多的人会看到它,也许有人会检查它。
-
图像在非常旧的计算机上的 Linux 上的 Tkinter 和 GIMP 中看起来相同。我怀疑:如果它使用 HDPI,可能问题出在系统或硬件上,并且 Tkinter 可能无法正确显示它。