我想旋转图像以跟随我的鼠标,我的学校计算机没有PIL。
答案 0 :(得分:0)
你不能。画布不支持旋转图像的能力,内置的PhotoImage类也不支持。
来自official Canvas documentation:
可以使用下面描述的窗口小部件命令移动或缩放单个项目,但它们可能不会旋转。
答案 1 :(得分:0)
Bryan的答案在技术上是正确的,因为PhotoImage类不包含旋转方法,tk.Canvas也不包含。但这并不意味着我们无法解决该问题。
def copy_img(img):
newimg = tk.PhotoImage(width=img.width(), height=img.height())
for x in range(img.width()):
for y in range(img.height()):
rgb = '#%02x%02x%02x' % img.get(x, y)
newimg.put(rgb, (x, y))
return newimg
上面的函数创建一个空白的PhotoImage对象,然后使用传递到其中的图像中的数据填充新PhotoImage的每个像素,从而逐像素地完美复制...这是无用的。>
但是!假设您想要一张颠倒的图像副本。将函数的最后一行更改为:
newimg.put(rgb, (x, img.height()-1 - y))
瞧!该函数仍然从上至下读取,但从下至上进行写入,从而在y轴上镜像了图像。希望它向右旋转90度吗?:
newimg.put(rgb, (img.height() - y, x))
用y代替x使其写行的列,从而有效地旋转它。
您对图像处理PhotoImage对象的深度有多深取决于您。如果您可以访问PIL(Python影像库)...某人已经基本完成了这项工作,请对其进行优化以使其最适合速度和内存消耗,然后将其打包为您方便的类和函数。但是,如果您不希望使用PIL,则绝对可以旋转PhotoImage。您只需要自己编写方法即可。
感谢acw1668的帖子,在这里使我了解了PhotoImage操作的基础知识: https://stackoverflow.com/a/41254261/9710971