Comment créer une image animée (GIF) en utilisant python et Imagemagick ?

Published: 03 septembre 2014

Tags: Python; Imagemagick; GIF;

DMCA.com Protection Status

Exempls de comment créer une image animée (GIF) en utilisant python et Imagemagick

Créez un GIF en utilisant imagemagick

Pour créer un gif animé à partir d'un ensemble d'images, le plus simple est d'utiliser imagemagick. Imagemagick est certainement déjà installé par défaut sur votre système sinon l'installation ne prend que quelques secondes.

Par exemple, prenons la liste d'images suivante:

Comment créer une image animée (GIF) en utilisant python et Imagemagick ? Comment créer une image animée (GIF) en utilisant python et Imagemagick ? Comment créer une image animée (GIF) en utilisant python et Imagemagick ?
Comment créer une image animée (GIF) en utilisant python et Imagemagick ? Comment créer une image animée (GIF) en utilisant python et Imagemagick ? Comment créer une image animée (GIF) en utilisant python et Imagemagick ?
Comment créer une image animée (GIF) en utilisant python et Imagemagick ? Comment créer une image animée (GIF) en utilisant python et Imagemagick ? Comment créer une image animée (GIF) en utilisant python et Imagemagick ?
Comment créer une image animée (GIF) en utilisant python et Imagemagick ?

pour créer un gif à partir de ces images, entrez la commande suivante dans votre terminal:

 convert gb-image-rotation-scipy-matplotlib-angle-* eiffel-tower.gif

Remarque: pour ralentir le défilement, vous devez utiliser l'argument -delay, comme dans cet exemple:

 convert -delay 100 *_adjusted.png animation.gif

Créez un GIF en utilisant imagemagick et python

Maintenant, pour utiliser la commande avec python, une solution est d'utiliser le module os:

import os

cmd = "convert gb-image-rotation-scipy-matplotlib-angle-* eiffel-tower.gif"

os.system(cmd)

donne

Comment créer une image animée (GIF) en utilisant python et Imagemagick ?
Comment créer une image animée (GIF) en utilisant python et Imagemagick ?

Un autre example en utilisant PILLOW

Un autre example en utilisant Pillow pour uniformiser la taille des images

Le problème ici est que les images ne sont pas de la même taille et que par conséquent l'image animée au format gif risque d'être coupée. Dans ce cas vous pouvez par exemple utiliser la bibliothèque de python PIL pour retravailler un peu les images avant de créer le fichier gif, comme ci-dessous:

image: 1.png
image: 1.png

image: 2.png
image: 2.png

image: 3.png
image: 3.png

image: 4.png
image: 4.png

image: 5.png
image: 5.png

Créer un gif animé à partir d'images en utilisant python : animation.gif
Créer un gif animé à partir d'images en utilisant python : animation.gif

import Image
import os

from PIL import ImageFont
from PIL import Image
from PIL import ImageDraw


im1 = Image.open("1.png")
im2 = Image.open("2.png")
im3 = Image.open("3.png")
im4 = Image.open("4.png")
im5 = Image.open("5.png")

List_i = []
List_j = []

List_i.append(im1.size[0]) 
List_j.append(im1.size[1]) 
List_i.append(im2.size[0]) 
List_j.append(im2.size[1]) 
List_i.append(im3.size[0]) 
List_j.append(im3.size[1]) 
List_i.append(im4.size[0]) 
List_j.append(im4.size[1]) 
List_i.append(im5.size[0]) 
List_j.append(im5.size[1])

print 'Image Size (i,j) Max', max(List_i), max(List_j)

pad = 4

new_im = Image.new('RGB', (max(List_i)+pad,max(List_j)+pad),(255,255,255))
new_im.paste(im1, (0+pad,0+pad))
new_im.save("1_adjusted.png", "PNG")

new_im = Image.new('RGB', (max(List_i)+pad,max(List_j)+pad),(255,255,255))
new_im.paste(im2, (0+pad,0+pad))
new_im.save("2_adjusted.png", "PNG")

new_im = Image.new('RGB', (max(List_i)+pad,max(List_j)+pad),(255,255,255))
new_im.paste(im3, (0+pad,0+pad))
new_im.save("3_adjusted.png", "PNG")

new_im = Image.new('RGB', (max(List_i)+pad,max(List_j)+pad),(255,255,255))
new_im.paste(im4, (0+pad,0+pad))
new_im.save("4_adjusted.png", "PNG")

new_im = Image.new('RGB', (max(List_i)+pad,max(List_j)+pad),(255,255,255))
new_im.paste(im5, (0+pad,0+pad))
new_im.save("5_adjusted.png", "PNG")


# Finally convert images to gif

os.system('convert -delay 100 *_adjusted.png animation.gif')

Références

Image

of