Python - Tkinter 保存的 PS 图像 - 无法打开它们

标签 python image save tkinter

我已经通过 Tkinter 模块编写了一个非常复杂的用于创建图形的脚本。

它按我的预期工作,并将 Canvas 保存为 PostScript 文件。

只是,我无法在任何内容中渲染 PS 文件。完全没有。

当我决定使用 Tkinter 时,我非常有信心,我可以对 PS 文件做一些事情,将它们转换为更标准的格式。

我看过一些教程,建议将绘图移植到 PIL,这可能可行,但将所有动态对象从 tk 移植到 PIL 将是一项艰巨的任务。

我想知道是否有人有更快/更脏的方法将像素从小部件窗口获取到图像文件中。

或者任何查看/光栅化 PS 文件的 Windows 方法?如果有兴趣,我可以在某处放置一个示例 PS 文件吗? (Python代码比较复杂,需要3张MySQL表才能拉取数据)

我正在尝试使用这里的屏幕抓取方法:http://mail.python.org/pipermail/image-sig/2003-May/002292.html

并且努力让事情按正确的顺序进行。

tkinter 代码:

def drawCircles(MasterList,buildlist):
master = Tk()
w = Canvas(master, width=1000, height=1000)
w.config(bg='white')
coordsMain = MasterList[6:]
textMain = MasterList[0:2]
w.pack()
w.create_oval(*coordsMain, width=3, fill = "ivory3")
masterLabel = "Source PUID\n" + str(MasterList[3]) + "\nFiles = " + str(MasterList[4])
w.create_text(*textMain, text=masterLabel, justify = "center", font=("Helvetica", 16))
for i in buildlist:
 coordsSet = i[6:10]
 w.create_oval(*coordsSet, width=3, fill = i[5])
 set_label = i[3] + "\n" + str(i[4]) + "%"
 l=w.create_text(4,4, text=set_label, justify = "center", fill="white", font=("Helvetica", 16))
 a,b,c,d= (w.bbox(l))
 bboxArea =(c-a)*(d-b)   
 a,b,c,d = i[6:10]
 circleArea = (c-a)*(d-b)
 if bboxArea>circleArea:
  textSet = i[10:]
  j=w.create_text(*textSet, text=set_label, justify = "center", font=("Helvetica", 16))
  r=w.create_rectangle(w.bbox(j),fill="white", width=0)
 else:
  textSet = i[:2]
  j=w.create_text(*textSet, text=set_label, justify = "center", font=("Helvetica", 16))
  r=w.create_rectangle(w.bbox(j),fill=i[5], width=0) 
 w.tag_lower(r,j)
 PUID = str(MasterList[3])
 PUID = PUID.replace('/', '-')
 filename = "\images\\" + PUID + ".jpg"
mainloop()

屏幕抓取代码:

x0 =w.winfo_rootx()
y0 =w.winfo_rooty()
x1 =x0 + w.winfo_width()
y1 =y0 + w.winfo_height()
im =ImageGrab.grab((x0, y0, x1, y1))
im.save(filename)

我可以通过这种方式制作 jpg,但似乎无法获取 jgp 中小部件的内容(创建的文件声明为 jpg,但没有图像负载)

如果我将屏幕抓取代码放在主循环之后,它会说它破坏了对象,在主循环之前,它还没有构建对象......

最佳答案

您可以尝试将其交给 ghostscriptsubprocess 。它可以以几乎任何位图格式呈现 PostScript。

关于Python - Tkinter 保存的 PS 图像 - 无法打开它们,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9507085/

相关文章:

python - bool() 在 Python 中的实际应用是什么?

python - Python 3 中字节串的正则表达式

python - 在Python中,应该如何测试环境变量中指定的路径中是否存在文件?

java - 如何旋转缓冲图像,然后将缓冲图像复制到像素数组中

.net - Mono/Ironpython 中的尾调用优化

html - 让JPG图片贴在网页底部不拉伸(stretch)

c# - 创建图像蒙版

c - 从以前保存的文件加载时缓冲区溢出

java - LibGDX And​​roid 首选项 - 如何将数据保存到应用程序

javascript - 如何保存 HTML 中的更改?