Créer un fichier GIF en utilisant Pillow en Python

J'ai fait un film GIF qui faisait ressembler le contour à un manga, alors j'ai fait un mémorandum. L'environnement est Python 3.6.8

matplotlib.animation

Il semble que vous puissiez créer un graphique qui fonctionne avec matplotlib.animation.

Il semble normal d'utiliser imagemagick en tant qu'écrivain pour enregistrer sous forme de fichier GIF.

imagemagick

Cela semble un peu gênant lors de l'installation sur Windows.

La page que j'ai utilisée comme référence lors de la tentative d'installation. https://higuma.github.io/2016/08/31/imagemagick-1/

Oreiller de bibliothèque Python

Le site auquel j'ai fait référence à propos de Pillow.

Installation https://note.nkmk.me/python-pillow-basic/

Comment créer un GIF https://note.nkmk.me/python-pillow-gif/

Essayer de faire

import_lib.py



import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import os
from PIL import Image, ImageDraw  

Préparez des données comme celles-ci.

スクリーンショット 2019-11-24 21.48.30.png

Les coordonnées supposent quelque chose comme ça image.png

test_data.py



test_data = pd.DataFrame({'key':range(10),
                          't1': [10] * 10,
                          't2': [i * 10 + 10 for i in range(10)],
                          't3': [i * 10 + 20 for i in range(10)],
                          't4': [5] * 10,
                          't5': [i * 10 + 5 for i in range(10)],
                          't6': [i * 10 + 15 for i in range(10)],
                          't7': [3] * 10,
                          't8': [i * 10 + 2 for i in range(10)],
                          't9': [i * 10 + 10 for i in range(10)]})

t = ['t' + str(int(i)) for i in range(1, 10)]
x = [i * 10 for i in range(1, 4)] * 3
y = [10] * 3 + [20] * 3 + [30] * 3

Créer une fonction d'extraction de données pour créer des diagrammes de contour

create_function.py



def f_contour_data(df, timing):
    #Extraire les données de la ligne au moment où vous souhaitez dessiner le diagramme de contour
    df0 = df[df['key'] == timing].copy()  
    #Définissez l'index sur 0 afin que les données extraites puissent être utilisées facilement.
    df0.reset_index(drop = True, inplace = True)
        
    x = [10, 20, 30] #Axe X du diagramme de contour
    y = [10, 20, 30] #Axe Y du diagramme de contour
    
    #Faites une liste de nombres
    # [[t1, t2, t3], [t4, t5, t6], [t7, t8, t9]]
    #Faites ceci
    l_T = []
    for i in range(len(y)):
        T = ['t' + str(int(j + i * 3)) for j in range(1, 4)]
        l_T.append(T)
        
    #Créer un tableau 2D sur l'axe des x
    x0 = np.empty((0, len(y))) #Créer un ndarray vide
    for i in range(len(y)):
        x0 = np.append(x0, np.array([x]), axis = 0) #Remplacez x par ndarray et ajoutez à x0
    #Créer un tableau 2D sur l'axe y
    y0 = np.empty((0, len(y)))
    for i in range(len(y)):
        y0 = np.append(y0, np.array([[y[i]] * 3]), axis = 0)
        
    #Créer un tableau 2D sur l'axe z
    z0 = np.empty((0, len(y)))
    for i in range(len(y)):
        temp = []
        T = l_T[i]
        for s in T:
            temp.append(df0[s][0])
        z0 = np.append(z0, np.array([temp]), axis = 0)                           
    return x0, y0, z0, l_T # l_T est pour confirmation et peut être supprimé

Si vous utilisez ceci pour dessiner un diagramme de contour sur un texte, il ressemblera à ceci.

create_contour.py


x0, y0, z0, l_t = f_contour_data(df = test_data, timing = 0)

plt.figure()
p = plt.contourf(x0, y0, z0, cmap = 'jet')
cbar = plt.colorbar(p)

image.png

Après cela, je vais faire de plus en plus ceci en boucle et l'enregistrer.

loop.py



l_img = [] #Du diagramme de contour.Liste pour mettre le chemin png
os.makedirs('Contour_gif/', exist_ok = True) #Créer un dossier pour enregistrer les graphiques
lv = [i * 10 for i in range(14)]
for i in range(10):
    x0, y0, z0, l_tc = f_contour_data(df = test_data, timing = i)
    plt.figure()
    p = plt.contourf(x0, y0, z0, lv, ![test.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/84834/dd6833da-c69d-95de-f016-f0a7e6082a08.gif)
cmap = 'jet')
    cbar = plt.colorbar(p)
    plt.title('key = ' + str(int(i)))
    save_path = 'Contour_gif/key_' + str(int(i)) + '.png'
    plt.savefig(save_path, bbox_inches="tight") #Enregistrez le graphique que vous avez créé
    l_img.append(save_path) #Je veux sûrement garder l'ordre du diagramme de contour, alors ajoutez-le à la liste ici
    
images = [] #Mettez le png ouvert dedans.
#Séparément l_Vous n'avez pas à spécifier la plage d'img. Je me fâche en fonction de la taille de l'image. .. ..
for s in l_img[0:151]:
        im = Image.open(s)
        images.append(im)
        # images[0]Il est temps de changer avec une durée qui relie le reste à partir du point de départ(msec) loop =Boucle infinie à 0
        images[0].save('test.gif',
                       save_all = True, append_images = images[1: len(images)],
                       duration = 500, loop = 0, optimaize = False)

Vous pouvez créer un fichier GIF comme celui-ci.

test.gif

Recommended Posts

Créer un fichier GIF en utilisant Pillow en Python
Créez un fichier MIDI en Python en utilisant pretty_midi
Créer un fichier binaire en Python
[GPS] Créer un fichier kml avec Python
Comment créer un fichier JSON en Python
Créer une fonction en Python
Créer un dictionnaire en Python
Créer un bot de collecte de données en Python à l'aide de Selenium
Créez votre premier fichier GDSII en Python en utilisant gdspy
Créer une interface graphique python à l'aide de tkinter
Créer un conteneur DI avec Python
Créer une chaîne aléatoire en Python
Créer une application GUI simple en Python
[Python] Créer un environnement Batch à l'aide d'AWS-CDK
Scraping de sites Web à l'aide de JavaScript en Python
Créer un fichier deb à partir d'un package python
Dessinez une structure arborescente en Python 3 à l'aide de graphviz
Opérations sur les fichiers en Python
Créez des raccourcis pour exécuter des fichiers Python sur le terminal avec VScode
Traitement de fichiers en Python
[Python] Fractionner un gros fichier Flask en utilisant Blueprint
Lire un fichier contenant des lignes brouillées en Python
Créer un module Python
Créer Spatia Lite en Python
Créer un fichier qui peut être exécuté dans le langage de script
Je veux créer une fenêtre avec Python
Créer un graphique de distribution normale standard en Python
Créer un environnement virtuel avec conda avec Python
Créer une carte Web en utilisant Python et GDAL
Créer un fichier wav à partir du shader GLSL en utilisant python3
Manipulation de fichiers avec Python
Afficher les avis sur les médicaments à l'aide de listes en Python
J'ai essayé de lire un fichier CSV en utilisant Python
Créer un modèle d'investissement dynamique simple en Python
Créer une nouvelle page en confluence avec Python
Créer un objet datetime à partir d'une chaîne en Python (Python 3.3)
Exécutez des fichiers Python à partir de HTML en utilisant Django
Charger des images à partir d'une URL à l'aide de Pillow dans Python 3
Créer un fichier au format Photoshop (.psd) avec python
Créer un package contenant des commandes globales en Python
Créer un enregistrement avec des pièces jointes dans KINTONE à l'aide du module de requêtes Python
Créer un environnement Python
Créer un modèle d'antenne cadre en Python dans KiCad
[Python] [Word] [python-docx] Essayez de créer un modèle de phrase de mot en Python en utilisant python-docx
[Docker] Créez un environnement jupyterLab (python) en 3 minutes!
Créer en Python sans fichier image factice dans Django et tester le téléchargement de l'image
Créer un diagramme de dispersion elliptique en Python sans utiliser une distribution normale multivariée
Analyser une chaîne JSON écrite dans un fichier en Python
Obtenir le nom de fichier dans un dossier à l'aide de glob
Importez un fichier JPG à l'aide de l'API Google Drive en Python
Essayez de créer un fichier compressé en utilisant Python et zlib
Enregistrez collectivement des données dans Firestore à l'aide d'un fichier csv en Python
[CRUD] [Django] Créer un site CRUD en utilisant le framework Python Django ~ 1 ~
[API LINE Messaging] Créez un menu riche avec Python
Créez un fichier image à l'aide de PIL (Python Imaging Library).
[Python] Générer ValueObject avec un constructeur complet à l'aide de classes de données