2010-11-01 15 views
19

मैं यह जानना चाहता हूं कि पाइथन के कछुए मॉड्यूल के साथ चित्र बनाने के बाद बिटमैप या वेक्टर ग्राफिक्स छवि को कैसे सहेजना है। थोड़ी सी गुगलिंग के बाद मुझे एक आसान जवाब नहीं मिल रहा है। मुझे canvas2svg नामक एक मॉड्यूल मिला, लेकिन मैं पाइथन के लिए बहुत नया हूं और मुझे नहीं पता कि मॉड्यूल को कैसे इंस्टॉल किया जाए। क्या कछुए कैनवास की छवियों को बचाने के लिए कुछ बनाया गया है? अगर मैं उबंटू मशीन पर पाइथन के लिए कस्टम मॉड्यूल कहां नहीं डालूं?पायथन टर्टल मॉड्यूल- एक छवि सहेजना

+0

घटना आप पारदर्शी रूप से (जो समाप्त ग्रेडिंग छात्र असाइनमेंट में सहायता के लिए अर्द्ध उपयोगी) कार्यक्रम के निष्पादन के अंत में एक छवि को बचाने के लिए चाहते हैं, कृपया जांचें: https://github.com/ucsb-cs/cTurtle_screenshot – bboe

उत्तर

24
from Tkinter import * 
from turtle import * 
import turtle 


forward(100) 
ts = turtle.getscreen() 

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

यह आपकी मदद करेगा; मुझे एक ही समस्या थी, मैंने इसे गुगल किया, लेकिन इसे कछुए मॉड्यूल के स्रोत को पढ़कर हल किया।

कैनवास (tkinter) ऑब्जेक्ट में पोस्टस्क्रिप्ट फ़ंक्शन है; आप इसका उपयोग कर सकते हैं।

कछुए मॉड्यूल में "व्हाटस्क्रीन" है जो आपको "कछुए स्क्रीन" देता है जो आपको टिक्ंटर कैनवास देता है जिसमें कछुआ चित्रकारी कर रहा है।

यह आपको encapsulated PostScript प्रारूप में सहेज लेगा, ताकि आप इसे निश्चित रूप से जीआईएमपी में उपयोग कर सकें लेकिन अन्य दर्शक भी हैं। या, आप Google से .gif बनाने के लिए कैसे कर सकते हैं।

+2

पायथन 2.7 के कछुए में, इसमें पहले से ही पोस्टस्क्रिप्ट फ़ंक्शन है। तो, आपको अलग से टिंकर आयात करने की आवश्यकता नहीं है। –

+0

मैं सिर्फ यह जोड़ना चाहता हूं कि ईपीएस फ़ाइल उसी स्थान पर सहेजी जाती है जैसे स्क्रिप्ट है। –

0

मैंने SvgTurtle कक्षा लिखी जो पाइथन से मानक टर्टल इंटरफ़ेस का समर्थन करता है, और svgwrite मॉड्यूल का उपयोग करके एक एसवीजी फ़ाइल लिखता है। 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() 
+0

मेरा मानना ​​है कि आपके पास 'draw_spiral()' -> 'draw_spiral()' 'def write_file' –

+0

में होना चाहिए, मुझे लगता है कि आप' draw_spiral() '->' draw_func() ', @ Mr.Weathers का मतलब है। तुम सही हो, यही मेरा मतलब था, इसलिए मैंने इसे ठीक कर दिया है। –