海龟模块 - 保存图像
我想知道如何在用Python的turtle模块绘图后保存一个位图或矢量图像。经过一番搜索,我没有找到简单的答案。我发现了一个叫做canvas2svg的模块,但我对Python还很陌生,不知道怎么安装这个模块。有没有什么内置的方法可以保存turtle画布的图像?如果没有的话,我该把自定义模块放在哪里呢,在Ubuntu系统上?
2 个回答
9
我写了一个叫做 svg-turtle 的工具包,它支持Python的标准海龟接口,并使用 svgwrite 模块来生成SVG文件。你可以通过 pip install svg-turtle
来安装它,然后像这样使用:
from svg_turtle import SvgTurtle
def draw_spiral(t):
t.fillcolor('blue')
t.begin_fill()
for i in range(20):
d = 50 + i*i*1.5
t.pencolor(0, 0.05*i, 0)
t.width(i)
t.forward(d)
t.right(144)
t.end_fill()
def write_file(draw_func, filename, width, height):
t = SvgTurtle(width, height)
draw_func(t)
t.save_as(filename)
def main():
write_file(draw_spiral, 'example.svg', 500, 500)
print('Done.')
if __name__ == '__main__':
main()
还有一个选择是 canvasvg 工具包。在你运行一些海龟代码后,它会把 tkinter
画布上的所有内容转换成SVG文件。使用这个工具包需要有 tkinter
的支持和一个显示屏,而svg-turtle则不需要这些。
54
from tkinter import * # Python 3
#from Tkinter import * # Python 2
import turtle
turtle.forward(100)
ts = turtle.getscreen()
ts.getcanvas().postscript(file="duck.eps")
这对你会有帮助;我之前也遇到过同样的问题,我在网上查了资料,但最终是通过阅读turtle模块的源代码解决的。
canvas(tkinter)对象有一个叫做postscript的功能,你可以使用它。
turtle模块里有一个“getscreen”的方法,它可以让你获取“turtle屏幕”,这个屏幕就是turtle在上面绘图的tkinter画布。
这个功能会把你的图保存为封装的PostScript格式,所以你可以在GIMP中使用它,当然还有其他的查看器也可以用。或者,你可以在网上查一下如何从这个格式制作.gif文件。你还可以使用免费的开源软件Inkscape来查看.eps文件,然后把它们保存为矢量图或位图文件。