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
No hay comentarios:
Publicar un comentario