我已經寫了一個非常複雜的腳本來創建圖形 - 通過Tkinter模塊。Python - Tkinter保存PS圖像 - 無法打開它們
它可以像我期望的那樣工作,並將畫布保存爲PostScript文件。
只有我無法渲染任何PS文件。完全一樣。
當我決定使用Tkinter時,我非常自信,我會用PS文件做些事情,讓它們進入更加標準的格式。
我看過一些教程,建議將繪圖移植到PIL,這可能會起作用,但將相當多的任務移植到tk到PIL的所有動態對象。
我想知道是否有人有更快/更髒的方式將像素從窗口小部件窗口變成圖像文件。
或任何窗口的方法來查看/光柵化的PS文件?如果有興趣,我可以在某個地方放置一個PS文件示例。 (python的代碼是相當複雜的,需要3代MySQL表拉在一起的數據)
我想從這裏使用screengrab方法: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,但沒有圖像有效載荷)
如果我在主循環之後放置了屏幕抓取代碼,它說它在mainloop之前銷燬了該對象,它沒有構建obj ect yet ....
我試圖從命令行Ghostscipt打開圖像,他們不呈現在所有 - 我仍然設置擺弄,看看我是否能得到它飛行。 – Jay 2012-02-29 22:28:10
你可以把PostScript文件放在什麼地方嗎?我以前從Python生成過PostScript。這並不困難。 – 2012-02-29 23:05:51
當然 - http://dl.dropbox.com/u/59536414/fmt-15.PS應該是一個1000 x 1000的畫布 – Jay 2012-02-29 23:15:32