
Questo articolo descrive come creare una GIF animata con Pillow in Python.
- Come creare GIF da immagini con Image.save()
- Esempio di codice per creare GIF animate
- Parametri di Image.save()
- append_images
- no
- ciclo continuo
- durata
Come creare GIF da immagini con Image.save()
Puoi creare una GIF animata da più immagini e salvarla con Image.save().
im.save('.gif', save_all=True, append_images=[im1, im2, ...])
L’elenco delle immagini [im1, im2, …] viene aggiunto al primo fotogramma, im, e viene generato e salvato un file GIF animato .gif.
Per i dettagli, vedere il documento ufficiale di seguito.
Di seguito il codice di esempio e la spiegazione dei parametri.
Esempio di codice per creare GIF animate
Ecco un codice di esempio per disegnare cerchi che cresce gradualmente con ImageDraw di Pillow e salvarlo come file GIF.
from PIL import Image, ImageDraw
images = []
width = 200
center = width // 2
color_1 = (0, 0, 0)
color_2 = (255, 255, 255)
max_radius = int(center * 1.5)
step = 8
for i in range(0, max_radius, step):
im = Image.new('RGB', (width, width), color_1)
draw = ImageDraw.Draw(im)
draw.ellipse((center - i, center - i, center + i, center + i), fill=color_2)
images.append(im)
for i in range(0, max_radius, step):
im = Image.new('RGB', (width, width), color_2)
draw = ImageDraw.Draw(im)
draw.ellipse((center - i, center - i, center + i, center + i), fill=color_1)
images.append(im)
images[0].save('data/dst/pillow_imagedraw.gif',
save_all=True, append_images=images[1:], optimize=False, duration=40, loop=0)
Viene generato il seguente file GIF animato.

Vedere il seguente articolo su come disegnare figure come cerchi con il cuscino.
Parametri di Image.save()
Fondamentalmente, se hai un elenco di immagini, puoi creare una GIF animata con il seguente codice:
images[0].save('data/dst/pillow_imagedraw.gif',
save_all=True, append_images=images[1:], optimize=False, duration=40, loop=0)
Se vuoi creare un’animazione GIF da più immagini esistenti invece di disegnare grafici e creare immagini come nell’esempio sopra, puoi fare lo stesso se carichi le immagini e le memorizzi in un elenco.
append_images
Chiama il metodo save() dall’immagine del primo frame, passando all’elenco delle immagini rimanenti ad append_images.
Nota che se usi append_images=images, il primo fotogramma verrà richiesto due volte. Nell’esempio sopra, la seconda e le successive immagini vengono selezionate mediante slicing.
no
Non ho letto correttamente il codice sorgente, quindi non quale elaborazione predefinita viene eseguita, ma se l’impostazione predefinita (ottimizza = Vero), immagini simili potrebbero essere omesse.
Se potrebbe risolvere il file di output è sbagliato, provare a risolverlo=False.
ciclo continuo
Imposta il numero di loop da ripetere. Se imposti loop=0, diventa un loop infinito.
Si noti che l’animazione termina in una volta per previsione predefinita.
durata
Imposta il tempo di visualizzazione di ogni fotogramma sulla durata in millisecondi. Se il valore è troppo piccolo, verrà ignorato.
