web-dev-qa-db-ja.com

Python Turtle Module-画像の保存

Pythonのタートルモジュールで図面を作成した後、ビットマップまたはベクターグラフィックスイメージを保存する方法を見つけたいと思います。少しググってみた後、簡単な答えが見つかりません。 canvas2svg というモジュールを見つけましたが、pythonを初めて使用するので、モジュールのインストール方法がわかりません。組み込みの方法はありますか?カメのキャンバスの画像を保存する方法?ない場合、どこにpythonのカスタムモジュールをUbuntuマシンに配置しますか?

29
jjclarkson
from Tkinter import *
from turtle import *
import turtle


forward(100)
ts = turtle.getscreen()

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

これはあなたを助けます。私も同じ問題を抱えていましたが、Googleで検索しましたが、タートルモジュールのソースを読んで解決しました。

Canvas(tkinter)オブジェクトにはpostscript関数があります。使用できます。

タートルモジュールには、タートルが描画されているTiknterキャンバスを提供する「タートルスクリーン」を提供する「getscreen」があります。

これによりカプセル化されたPostScript形式で保存されるため、GIMPで確実に使用できますが、他のビューアも存在します。または、これから.gifを作成する方法をグーグルできます。

33
KilyenOrs

私はPythonからの標準TurtleインターフェースをサポートするSvgTurtleクラスを作成し、 svgwrite モジュールを使用してSVGファイルを書き込みました。 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()
2
Don Kirkby