"""Módulo para produzir gifs a partir de diversas imagens de plotagens, utilizado
para a criação da visualização de alguns membros q utilizam de gifs animados.
"""
import sys, os
esse_caminho = os.path.dirname(os.path.abspath(__file__))
sys.path.append(esse_caminho)
import pandas as pd
import imageio
import doctest
[documentos]
def seletor_de_frames(data_inicial:str, data_final:str, path_pasta_imagens:str) -> list:
"""
A função recebe a data_inicial e a data_final, elas criam uma range de imagens, além disso
o path relativo da pasta que contém as imagens em questão. Ela, então, cria uma lista com
as imagens e a retorna para que possam ser concatenadas em um gif.
Parameters
----------
data_inicial
type: str
description: inicio da range de datas
example: "2020"
data_final
type: str
description: final da range de datas
example: "2021"
path_pasta_imagens
type: str
description:
example: "root\\folder_01\\final_folder"
Return
----------
lista_de_frames
type: list
description: lista com as imagens que irão compor o gif da visualização
Test
----------
>>> seletor_de_frames("2014", "2016", "pasta_inexistente")
[]
"""
lista_de_frames = list()
try:
# selecionando os frames
for cada_ano in range(int(data_inicial), int(data_final) + 1):
for cada_mes in range(1, 13):
frame = imageio.v2.imread(f"{path_pasta_imagens}\\frame_{cada_ano}_{cada_mes}.png")
lista_de_frames.append(frame)
except FileNotFoundError:
pass
except:
print("Algo deu errado. Verifique a documentação da função e tente novamente.")
lista_de_frames = None
return lista_de_frames
[documentos]
def gerador_de_gif(lista_de_frames:list, path_folder_for_save:str, output_name:str, fps:int) -> str:
"""
A função tem como objetivo criar vários frames, separados por ano e por mês,
para que eles sejam usados em um gráfico animado. Ela vai gerar várias imagens
que serão utilizadas para montar a visualização animada.
Parameters
----------
lista_de_frames
type: list
description: lista com frames que devem compor o gif
path_folder_for_save
type: str
description: path da pasta para salvar o arquivo
example: "root\\folder_01\\final_folder"
output_name
type: str
description: nome do arquivo que vai ser gerado e salvo
example: "meu_gif"
Test
----------
>>> gerador_de_gif(list(), "functions", "nome_genérico", fps=5)
A lista fornecida deveria conter várias imagens para formar o gif. Verifique o parâmetro fornecido.
"""
try:
imageio.mimsave(f"{path_folder_for_save}\{output_name}.gif", lista_de_frames, fps=fps)
except PermissionError:
print("O caminho fornecido é inválido. Tente novamente.")
return None
except ValueError:
print("A lista fornecida deveria conter várias imagens para formar o gif. Verifique o parâmetro fornecido.")
return None
except:
print("Algo deu errado. Verifique a documentação da função e tente novamente.")
return None
return "Deu tudo certo!"
if __name__ == "__main__":
doctest.testmod(verbose=True)