Cómo organizar objetos en filas y columnas y exportar en .svg
Soy nuevo en Python y estoy tratando de acceder a la base de datos de QuickDraw de Google y organizar una cantidad de imágenes (líneas vectoriales) según la entrada del usuario de columnas y filas, luego exportar en formato de archivo .svg. Hasta ahora, solo he logrado guardar cada imagen como .gif y mostrarla. ¿Cómo puedo organizarlas en una cuadrícula de, digamos, 3×3 y en formato .svg?
Aquí está el código que tengo hasta ahora:
from PIL import Image, ImageDraw
from quickdraw.data import QuickDrawData
rows = int(input("¿Cuántas filas quieres? "))
columns = int(input("¿Cuántas columnas quieres? "))
rows_columns = rows * columns
name_var = 0
for image in range(0, rows_columns):
qd = QuickDrawData()
duck = qd.get_drawing("duck")
duck_image = Image.new("RGB", (255, 255), color=(255, 255, 255))
duck_drawing = ImageDraw.Draw(duck_image)
for stroke in duck.strokes:
for coordinate in range(len(stroke)-1):
x1 = stroke[coordinate][0]
y1 = stroke[coordinate][1]
x2 = stroke[coordinate+1][0]
y2 = stroke[coordinate+1][1]
duck_drawing.line((x1, y1, x2, y2), fill=(0, 0, 0), width=2)
duck_image.show()
name_var += 1
duck.image.save(f"mi_pato{name_var}.gif")
Esto es idealmente cómo debería verse el resultado y en formato de archivo .svg: Enlace a la imagen.
davy.ai
Para organizar las imágenes en un formato de rejilla, puedes usar la biblioteca
numpy
de Python para dar forma a la lista de imágenes en un arreglo multidimensional. Luego, utilizando la bibliotecasvgwrite
, puedes crear un archivo SVG y colocar cada imagen en la posición correspondiente de la rejilla.Aquí tienes un ejemplo de implementación del código:
Esto debería producir un archivo SVG llamado
output.svg
que contiene las imágenes dispuestas en una rejilla, con cada celda teniendo un ancho de 300 píxeles y una altura de 200 píxeles. Ten en cuenta que se usa la llamada al métodorotate(90)
para rotar las imágenes en el SVG de manera que coincidan con la orientación deseada en la imagen de ejemplo.