Python é uma linguagem com múltiplas aplicações. Neste post, ilustraremos uma de suas aplicações que talvez poucos conheçam: a criação de GIFs. GIFs são um tipo de imagem compostas por múltiplas imagens com pequenas variações entre si.
GIFs podem animar páginas da web e redes sociais, turbinar apresentações de trabalhos, e até ilustrar o funcionamento de algoritmos em artigos. A criação de GIFs com Python requer poucas linhas de códigos e conta com o auxílio do pacote Pillow.
GIFs com Python na prática
Para começar, é preciso instalar a biblioteca Pillow. Quem tem Python distribuído pelo Anaconda, a biblioteca já está instalada. Para quem não tem, a instalação é feita com o comando abaixo:
pip install Pillow
Criação de GIFs com Python: o código
A criação de GIFs com Python é simples. Nós vamos fazer uma função para esse processo. Essa função tem como argumento uma pasta com as imagens que iremos animar. Crie um arquivo Python e importe as ferramentas necessárias como mostrado abaixo. Além da biblioteca Pillow, utilizaremos o módulo os.
import os
from PIL import Image
Na nossa função, o primeiro passo é criar uma lista das imagens (linha 2). Para esse tutorial, usaremos imagens chamadas 1.JPG, 2.JPG, etc. Depois, abrimos as imagens uma a uma com o método Image.open() e criamos uma lista chamada frames com as imagens abertas (linha 3). Em seguida, definimos o primeiro frame da nossa lista (linha 4).
Depois, usamos o Pillow para salvar as imagens com formato gif (linha 5). Nesse comando, também é preciso especificar alguns parâmetros. É importante especificar save_all como True para que todas as imagens sejam inseridas na GIF. O parâmetro append_images é usado para definir qual lista de imagens será usada na GIF. O parâmetro duration especifica a duração em milissegundos de cada frame. Por fim, definimos loop = 0 para indicar que a GIF deve executar seu loop infinitamente.
def make_gif(path_to_imgs):
files = os.listdir(path_to_imgs)
frames = [Image.open(os.path.join(path_to_imgs, fig)) for fig in files]
frame_one = frames[0]
frame_one.save("minha_gif.gif", save_all=True, append_images=frames, duration=150, loop=0)
Com a função terminada, é necessário chamá-la usando uma pasta com nossas imagens como argumento. No código abaixo, substitua o termo path_to_image pela localização da sua pasta com imagens. É preciso ter uma pasta com várias imagens com pequenas diferenças entre elas.
make_gif(path_to_imgs)
Para quem não tem imagens, as imagens que usamos podem ser baixadas no link abaixo.
Essa é a GIF que criamos.