首页 > 解决方案 > 如何在 Tkinter 中显示超长图像?(如何绕过画布最大限制)

问题描述

我尝试了多种使用 tkinter非常长的图像显示大图像的方法无论我尝试了什么,似乎都没有任何有效的代码。主要问题是 Canvas 的最大高度限制约为 30,000 像素。

有没有办法显示整个图像?增加,还是绕过画布限制?请参见下面的示例图像。

标签: pythonimagetkintertkinter-canvas

解决方案


没有办法绕过画布的大小限制,除非修改和重新编译底层 tk 代码。这可能不是一项微不足道的任务。

假设您尝试在典型的计算机屏幕上显示图像,仍然有一些方法可以查看图像。基本上它归结为只加载用户在任何时候都可以看到的图像部分。

例如,世界的图像比 64k x 64k 大得多,但谷歌地图可以让你随心所欲地滚动。它通过将地图显示为一系列瓷砖来做到这一点。当您在图像周围移动时,屏幕外的图块会被丢弃并加载新的图块。

同样的技术可以在 tkinter 中使用,甚至可以与滚动条一起使用,而不是拖动动作。您只需要将滚动条连接到一个函数而不是直接连接到画布。然后,当调用该函数时,它可以计算出用户正在查看图像的哪一部分,并将其加载到内存中。


推荐阅读