如何在Tkinter中反转导入图像的y轴?
如何在Tkinter中反转导入图像的y轴?
对于重复标记:我完全意识到在matplotlib中有一些类似的问题,比如这个问题。我的问题是关于Tkinter而不是matplotlib。\n我现在正在将Lena导入Python,并在她的帽子上画一个绿点:\n现在我希望绿点(50, 50)仍然在Lena的帽子上,但我希望绿点在左下角而不是左上角被画出来。\n我期望的效果如下所示:\n如图所示,我在matplotlib中很容易做到这一点,只需要额外添加一行代码:\naxes.invert_yaxis()\n问题\n我现在在Tkinter的画布上绘图。\n我该如何实现相同的效果?\n更新\nLena只是为了说明我的目的。在我的实际问题中,我没有在Tkinter中导入任何内容。我只是在一个空画布上绘图。我不愿修改我的数据,我只希望绘图上下颠倒。就像在我的Lena示例中一样,坐标仍然是(50, 50),不同之处在于现在它在左下角而不是顶部角落。
问题原因:在Tkinter中导入的图像的y轴方向与期望的方向相反。
解决方法:对导入的图像进行y轴反转。
from tkinter import * import PIL.ImageTk as ImageTk import PIL.Image as Image root = Tk() canvas = Canvas(root, width=640, height=480, bd=0, highlightthickness=0) canvas.pack() # 导入图像 image = Image.open("image.jpg") image = image.transpose(Image.FLIP_TOP_BOTTOM) # 反转y轴方向 photo = ImageTk.PhotoImage(image) # 显示图像 canvas.create_image(0, 0, image=photo, anchor=NW) root.mainloop()
以上代码可以将导入的图像在Tkinter中显示,并且将y轴方向进行了反转。
在上面的代码中,通过获取画布的高度canv.winfo_reqheight(),并将原来的y值进行减法运算,得到了y轴的反转值。实际上,这里没有使用任何内置函数,只是通过简单的数学运算实现了y轴的反转。希望这正是你所寻找的...祝你好运!
【原文】
在Tkinter中如何反转导入图像的y轴?
对我来说,通过以下代码应该很简单:
import Tkinter # 设置一个基本的画布 top = Tkinter.Tk() canv = Tkinter.Canvas(top, bg="brown", height=250, width=300) # 替换为任意你想要的值 x = 50 y = 50 # 绘制第一个点 line1 = canv.create_line(x, y, x - 2, y - 2, fill="green", width=3) # 这一行几乎就是找到y轴反转的全部 y = canv.winfo_reqheight() - y # 绘制第二个点 line2 = canv.create_line(x, y, x - 2, y - 2, fill="green", width = 3) canv.pack() top.mainloop()
这将返回以下结果:

基本上,我所做的就是获取画布的高度(250),并从中减去先前的y值(50),从而得到了y轴的反转值。虽然不是一个内置函数,但实际上反转的部分非常简单。希望这正是你所寻找的...祝你好运!
问题的出现原因是作者想要在Tkinter中导入的图像上反转y轴,但是不确定如何实现。解决方法是使用ImageTk.PhotoImage
来处理图像,并在画布上绘制反转后的图像。
作者首先展示了如何使用角度来旋转图像,并将旋转后的图像转换为ImageTk.PhotoImage
对象。接下来,作者提到可以使用反转后的坐标来绘制图像,以达到反转y轴的目的。还有在Tkinter画布上绘制图像的方法。
作者进一步解释了自己的问题,并表示自己不想修改数据,只希望实现绘图的上下翻转。还有可能需要将数据保存到文件中并进行反转的解决方法。最后,作者表示对于以他描述的方式旋转画布并不可行。
文章提供了一个解决问题的思路,即使用ImageTk.PhotoImage
处理图像并在画布上绘制反转后的图像。同时,文章也提到了可能需要修改数据或将数据保存到文件中进行反转的解决方法。总体而言,文章清晰地解释了问题的出现原因和解决方法,并给出了一些建议和思考。