Python Forum
make a turtle object an image
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
make a turtle object an image
#1
i have a program that plots a parametric equation and then saves the drawing to a jpg image file.

import turtle
from math import cos,sin,tan,pi
from datetime import datetime
from PIL import Image 


window = turtle.Screen()
window.screensize(1000,1000)
pen = turtle.Turtle()
pen.hideturtle()
pen.pensize(3)
pen.penup()

angle = 0
theta = 0.01 
a=-7
b=-17
c=27
d=-4
steps = int (250*pi/theta)
turtle.tracer(0,0)

for t in range(0,steps):

        angle+=theta
        x=(-cos(a*angle/d)-cos(b*angle/d)+cos(c*angle/d))*150
        y=(-sin(a*angle/d)-sin(b*angle/d)+sin(c*angle/d))*150

        pen.goto(x,y)
        pen.pendown()
turtle.update()

date = (datetime.now()).strftime("%d%b%Y-%H%M%S") 
fileName = 'posta-' + date
pen .getscreen().getcanvas().postscript(file= fileName+'.eps')
img = Image.open(fileName + '.eps') 
img.save(fileName + '.jpg')  

print ("it is done")

turtle.done()
the problem is that the image that this program saves is not a complete version of the parametric equation.
is there a way to save big turtle drawings as images?

the part of the program that saves the turtle object as jpg:

pen .getscreen().getcanvas().postscript(file= fileName+'.eps')
img = Image.open(fileName + '.eps') 
img.save(fileName + '.jpg')  
is there another way to save a turtle drawing as a jpg image file?
Reply
#2
I have read about the pyscreenshot lib, but never used it.
I did use pyperclip, but only for plain text.
Check it out.

Paul
Reply
#3
(Apr-12-2020, 04:40 PM)Agusben Wrote: is there another way to save a turtle drawing as a jpg image file?
Hi!

Maybe you could use the following.
I have modified your original program:

import turtle
from math import cos,sin,tan,pi
from datetime import datetime
from PIL import Image 


window = turtle.Screen()
window.screensize(1000,1000)
pen = turtle.Turtle()
pen.hideturtle()
pen.pensize(3)
pen.penup()

angle = 0
theta = 0.01 
a=-7
b=-17
c=27
d=-4
steps = int (250*pi/theta)
turtle.tracer(0,0)

for t in range(0,steps):

        angle+=theta
        x=(-cos(a*angle/d)-cos(b*angle/d)+cos(c*angle/d))*150
        y=(-sin(a*angle/d)-sin(b*angle/d)+sin(c*angle/d))*150

        pen.goto(x,y)
        pen.pendown()
turtle.update()

date = (datetime.now()).strftime("%d%b%Y-%H%M%S") 
fileName = 'posta-' + date
pen .getscreen().getcanvas().postscript(file= fileName+'.eps')
img = Image.open(fileName + '.eps') 
img.save(fileName + '.jpg')  

print ("it is done")

turtle.done()
by modifying your line 35 into a group of new lines, and also I eliminated your line 41:
import turtle
from math import cos,sin,tan,pi
from datetime import datetime
from PIL import Image 
 
    
window = turtle.Screen()
window.screensize(1000,1000)
pen = turtle.Turtle()
pen.hideturtle()
pen.pensize(3)
pen.penup()
 
angle = 0
theta = 0.01 
a=-7
b=-17
c=27
d=-4
steps = int (250*pi/theta)
turtle.tracer(0,0)
 
for t in range(0,steps):
 
        angle+=theta
        x=(-cos(a*angle/d)-cos(b*angle/d)+cos(c*angle/d))*150
        y=(-sin(a*angle/d)-sin(b*angle/d)+sin(c*angle/d))*150
 
        pen.goto(x,y)
        pen.pendown()
turtle.update()
 
date = (datetime.now()).strftime("%d%b%Y-%H%M%S") 
fileName = 'posta-' + date

screen = turtle.Screen()
screen.setup(1000, 1000)
turtle = turtle.Turtle(visible=False)
screen.tracer(False)
screen.tracer(True)
canvas = screen.getcanvas()
canvas.postscript(file= fileName+'.eps', width=1000, height=1000)

img = Image.open(fileName + '.eps') 
img.save(fileName + '.jpg')  
 
print ("it is done")
Now, you get this output:
Output:
RESTART: C:\Users\User1\AppData\Local\Programs\Python\Python37\turtle_screen_size_01.py it is done >>>
[Image: turtle-window.png]
[Image: posta-15-Apr2020-144259.png]

I hope it helps.

All the best,
newbieAuggie2019

"That's been one of my mantras - focus and simplicity. Simple can be harder than complex: You have to work hard to get your thinking clean to make it simple. But it's worth it in the end because once you get there, you can move mountains."
Steve Jobs
Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
  Trying to make a board with turtle, nothing happens when running script Quascia 3 608 Nov-01-2023, 03:11 PM
Last Post: deanhystad
  How to make IMG + FILTER object convertable for glTexImage2D buzzdarkyear 0 873 Jan-12-2022, 05:15 PM
Last Post: buzzdarkyear
  wn = turtle.screen() AttributeError: module 'turtle' has no attribute 'screen' Shadower 1 6,127 Feb-06-2019, 01:25 AM
Last Post: woooee
  Help! Turtle not working, even when we click the turtle demo in IDLE nothing happens. BertyBee 3 5,540 Jan-04-2019, 02:44 AM
Last Post: SheeppOSU
  Functions to make an image zoom in until a response is made sawilliams 1 2,084 Aug-02-2018, 08:06 AM
Last Post: Larz60+

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020