代码之家  ›  专栏  ›  技术社区  ›  jjclarkson Andy Rose

Python Turtle模块-保存图像

  •  25
  • jjclarkson Andy Rose  · 技术社区  · 15 年前

    在使用python的turtle模块创建图形之后,我想知道如何保存位图或矢量图形图像。我在网上搜索了一下,找不到一个简单的答案。我找到了一个叫 canvas2svg ,但我对python很陌生,不知道如何安装该模块。是否有一些内置的方式来保存海龟画布的图像?如果不是,我应该把python的自定义模块放在Ubuntu机器上的哪里?

    2 回复  |  直到 11 年前
        1
  •  34
  •   Mr.Wizard naktepe    14 年前
    from Tkinter import *
    from turtle import *
    import turtle
    
    
    forward(100)
    ts = turtle.getscreen()
    
    ts.getcanvas().postscript(file="duck.eps")
    

    这对你有帮助;我也遇到过同样的问题,我用谷歌搜索了一下,但通过阅读海龟模块的源代码解决了这个问题。

    canvas(tkinter)对象具有postscript函数;您可以使用它。

    这将以封装的PostScript格式保存您,因此您可以在GIMP中使用它,但也有其他查看器。或者,你可以用谷歌搜索如何从中生成一个.gif。

        2
  •  2
  •   Don Kirkby    7 年前

    我写了一篇 SvgTurtle 类,该类支持来自Python的标准Turtle接口,并使用 svgwrite svg_turtle.py ,然后这样称呼它:

    from turtle import *  # @UnusedWildImport
    
    import svgwrite
    
    from svg_turtle import SvgTurtle
    
    
    def draw_spiral():
        fillcolor('blue')
        begin_fill()
        for i in range(20):
            d = 50 + i*i*1.5
            pencolor(0, 0.05*i, 0)
            width(i)
            forward(d)
            right(144)
        end_fill()
    
    
    def write_file(draw_func, filename, size):
        drawing = svgwrite.Drawing(filename, size=size)
        drawing.add(drawing.rect(fill='white', size=("100%", "100%")))
        t = SvgTurtle(drawing)
        Turtle._screen = t.screen
        Turtle._pen = t
        draw_func()
        drawing.save()
    
    
    def main():
        write_file(draw_spiral, 'example.svg', size=("500px", "500px"))
        print('Done.')
    
    
    if __name__ == '__main__':
        main()