【发布时间】:2018-05-09 01:17:48
【问题描述】:
我无法显示长度(高度)超过 30612 像素高的图像。我读过画布有最大高度。我想获取源文件并将其扩展到 90 或 100k 像素的高度。相反,我看到有人建议画布可能会被缓冲,如果这是真的,我不知道如何实现它。感谢任何帮助!
我正在使用我在 Stack 中找到的用于处理大图像的代码,它确实可以,但最终达到了 cavas 高度限制。 Canvas Limit
from tkinter import *
from PIL import ImageTk
from PIL import *
Image.MAX_IMAGE_PIXELS = None
class ScrolledCanvas(Frame):
def __init__(self, parent=None):
Frame.__init__(self, parent)
self.master.title("Spectrogram Viewer")
self.pack(expand=YES, fill=BOTH)
canv = Canvas(self, relief=SUNKEN)
canv.config(width=400, height=500)
# canv.config(scrollregion=(0,0,1000, 1000))
# canv.configure(scrollregion=canv.bbox('all'))
canv.config(highlightthickness=0)
sbarV = Scrollbar(self, orient=VERTICAL)
sbarH = Scrollbar(self, orient=HORIZONTAL)
sbarV.config(command=canv.yview)
sbarH.config(command=canv.xview)
canv.config(yscrollcommand=sbarV.set)
canv.config(xscrollcommand=sbarH.set)
sbarV.pack(side=RIGHT, fill=Y)
sbarH.pack(side=BOTTOM, fill=X)
canv.pack(side=LEFT, expand=YES, fill=BOTH)
self.im = Image.open("Test_3.tif")
width, height = self.im.size
canv.config(scrollregion=(0, 0, width, height))
self.im2 = ImageTk.PhotoImage(self.im)
self.imgtag = canv.create_image(0, 0, anchor="nw", image=self.im2)
ScrolledCanvas().mainloop()
【问题讨论】:
-
是否可以使用多个画布,每个画布都包含一个子图像?只是一个想法......
-
如果可能的话,我愿意尝试一下,看起来好像有人在下面尝试过。
标签: python image tkinter buffer