¿Cómo creo un gif animado en Python usando Wand?

Las instrucciones son lo suficientemente simples en los documentos de Wand para leer una imagen secuenciada (por ejemplo, gif animado, archivo de icons, etc.):

>>> from wand.image import Image >>> with Image(filename='sequence-animation.gif') as image: ... len(image.sequence) 

… pero no estoy seguro de cómo crear uno.

En Ruby esto es fácil usando RMagick , ya que tienes ImageList s. (ver mi esencia para un ejemplo.)

Intenté crear una Image (como el “contenedor”) y crear una instancia de cada imagen SingleImage con una ruta de imagen, pero estoy bastante seguro de que está mal, especialmente porque la documentación del constructor de imagen SingleImage no busca uso por parte del usuario final.

También intenté crear una wand.sequence.Sequence desde ese ángulo, pero también llegué a un callejón sin salida. Me siento muy perdido.

Los mejores ejemplos se encuentran en las pruebas unitarias enviadas con el código. wand/tests/sequence_test.py por ejemplo.

Para crear un gif animado con varita mágica, recuerde cargar la imagen en la secuencia y luego configure la demora / optimización adicional después de cargar todos los cuadros.

 from wand.image import Image with Image() as wand: # Add new frames into sequance with Image(filename='1.png') as one: wand.sequence.append(one) with Image(filename='2.png') as two: wand.sequence.append(two) with Image(filename='3.png') as three: wand.sequence.append(three) # Create progressive delay for each frame for cursor in range(3): with wand.sequence[cursor] as frame: frame.delay = 10 * (cursor + 1) # Set layer type wand.type = 'optimize' wand.save(filename='animated.gif') 

salida animated.gif