37

我想弄清楚如何在使用 python 的 turtle 模块创建绘图后保存位图或矢量图形图像。经过一番谷歌搜索后,我找不到简单的答案。我确实找到了一个名为canvas2svg的模块,但我对 python 很陌生,我不知道如何安装该模块。是否有一些内置方法可以保存海龟画布的图像?如果不是,我应该在 Ubuntu 机器上将 python 的自定义模块放在哪里?

4

2 回答 2

48
from tkinter import *  # Python 3
#from Tkinter import *  # Python 2
import turtle


turtle.forward(100)
ts = turtle.getscreen()

ts.getcanvas().postscript(file="duck.eps")

这将对您有所帮助;我有同样的问题,我用谷歌搜索了它,但通过阅读海龟模块的源代码解决了它。

canvas(tkinter)对象具有postscript功能;你可以使用它。

turtle 模块有“getscreen”,它为您提供“turtle screen”,它为您提供了海龟正在绘制的 Tiknter 画布。

这会将您保存为封装的 PostScript 格式,因此您可以肯定地在 GIMP 中使用它,但也有其他查看器。或者,您可以谷歌如何从中制作 .gif。您也可以使用免费和开源的 Inkscape 应用程序来查看 .eps 文件,然后将它们保存为矢量或位图图像文件。

于 2011-05-18T18:27:57.557 回答
6

我从 Python 编写了支持标准 Turtle 接口的svg-turtle 包,并使用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 不需要。

于 2017-08-11T00:17:45.587 回答