Gráficos de tortuga sobre imágenes en Python

Pues hoy traigo una mini-libraría que se apoya en PIL para hacer gráficos de tortuga directamente sobre imágenes [ imgturtle.py ]: 

Dibujado con este script [  dragon.py ]

La idea es que se acerque lo máximo posible a la implementación oficial de los gráficos_de_tortuga_de_python con el añadido de poder guardar las imágenes ( y más velocidad me atrevería a decir ).

Al comenzar hay que crear un objeto imgturtle, que maneja la imágen, al inicializar el objeto se debe pasar un parámetro, una tupla de números que defina el tamaño en 'x' y en 'y' de la imágen o bien una cadena con el nombre del archivo del que se va a partir:

t = imgturtle( ( x, y ) ) # Nueva imágen

t = imgturtle( argv[ 1 ] ) # Imágen basada en otra

Una vez creado el objeto se puede disponer de los métodos habituales de estos gráficos:

imgturtle.clear( ): # Vuelve a la imágen original

imgturtle.reset( ): # Reinicia la tortuga

imgturtle.save( fname ): # Guarda la imágen

imgturtle.rt( angle ): # Gira a la derecha con un ángulo || imgturtle.right()

imgturtle.lt( angle ): # Gira a la izquierda con un ángulo || imgturtle.left ()

imgturtle.fd(  steps ): # Avanza unos pasos || imgturtle.forward()

imgturtle.bk( steps ): # Retrocede unos pasos || imgturtle.backward( )

imgturtle.pu( ): # Levanta el lápiz

imgturtle.seth( angle ): # Establece el ángulo ||imgturtle.setheading()

imgturtle.goto( x, y ):    # Se mueve hasta una posición

imgturtle.pencolor( color ): # Establece el color que se pinta

imgturtle.home( ): # Vuelve a la posición inicial

imgturtle.pd( ): # Baja el lápiz || imgturtle.pendown() imgturtle.down()

imgturtle.pu( ):# Levanta el lápiz || imgturtle.penup() imgturtle.up()

imgturtle.heading( ): # Devuelve el ángulo de la tortuga

imgturtle.pos( ):# Devuelve la posición de la tortuga ||  imgturtle.position()

Nota: el sistema de coordenadas no está centrado en ( 0, 0 ), sinó en x / 2, y / 2

imgturtle.isdown( ): # Si el lápiz está bajado

Y eso es todo, por último un ejemplo dibujando sobre una imágen ya existente [ rayar.py ]. Original:

Después de "$ ./rayar.py base.png out.png":

Hasta otra

untagged

Introducción a NetKit( III ): switches y enrutado » « Compilando en entornos hostiles: Dia