Erstellen Sie eine GIF-Datei mit Pillow in Python

Ich habe einen GIF-Film gemacht, in dem die Konturfigur wie ein Manga aussieht, also habe ich ein Memorandum gemacht. Umgebung ist Python 3.6.8

matplotlib.animation

Es scheint, dass Sie ein Diagramm erstellen können, das mit matplotlib.animation funktioniert.

Es scheint normal, imagemagick als Writer zu verwenden, um es als GIF-Datei zu speichern.

imagemagick

Bei der Installation unter Windows scheint dies ein wenig problematisch zu sein.

Die Seite, die ich bei der Installation als Referenz verwendet habe. https://higuma.github.io/2016/08/31/imagemagick-1/

Python-Bibliothek Kissen

Die Seite, auf die ich mich über Pillow bezog.

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

Wie erstelle ich ein GIF? https://note.nkmk.me/python-pillow-gif/

Versuchen Sie zu machen

import_lib.py



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

Bereiten Sie solche Daten vor.

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

Koordinaten nehmen so etwas an 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

Erstellen Sie eine Datenextraktionsfunktion zum Erstellen von Konturdiagrammen

create_function.py



def f_contour_data(df, timing):
    #Extrahieren Sie die Daten der Zeile zu dem Zeitpunkt, zu dem Sie das Konturdiagramm zeichnen möchten
    df0 = df[df['key'] == timing].copy()  
    #Setzen Sie den Index auf 0, damit die extrahierten Daten problemlos verwendet werden können.
    df0.reset_index(drop = True, inplace = True)
        
    x = [10, 20, 30] #X-Achse des Konturdiagramms
    y = [10, 20, 30] #Y-Achse des Konturdiagramms
    
    #Machen Sie eine Liste von Zahlen
    # [[t1, t2, t3], [t4, t5, t6], [t7, t8, t9]]
    #Mach das
    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)
        
    #Erstellen Sie ein 2D-Array mit x-Achse
    x0 = np.empty((0, len(y))) #Erstellen Sie ein leeres ndarray
    for i in range(len(y)):
        x0 = np.append(x0, np.array([x]), axis = 0) #Ersetzen Sie x durch ndarray und fügen Sie es zu x0 hinzu
    #Erstellen Sie ein 2d-Array mit y-Achse
    y0 = np.empty((0, len(y)))
    for i in range(len(y)):
        y0 = np.append(y0, np.array([[y[i]] * 3]), axis = 0)
        
    #Erstellen Sie ein 2D-Array mit Z-Achse
    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 dient zur Bestätigung und kann gelöscht werden

Wenn Sie damit ein Konturdiagramm auf einem Text zeichnen, sieht es folgendermaßen aus.

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

Danach werde ich dies immer mehr in einer Schleife machen und es speichern.

loop.py



l_img = [] #Vom Konturdiagramm.Liste zum Einfügen des PNG-Pfads
os.makedirs('Contour_gif/', exist_ok = True) #Erstellen Sie einen Ordner zum Speichern von Grafiken
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") #Speichern Sie das von Ihnen erstellte Diagramm
    l_img.append(save_path) #Ich möchte die Reihenfolge des Konturdiagramms sicher beibehalten, also fügen Sie es der Liste hier hinzu
    
images = [] #Legen Sie das offene PNG hinein.
#Separat l_Sie müssen den Bereich von img nicht angeben. Ich werde abhängig von der Größe des Bildes wütend. .. ..
for s in l_img[0:151]:
        im = Image.open(s)
        images.append(im)
        # images[0]Zeit zum Umschalten mit der Dauer, um den Rest vom Startpunkt aus zu verbinden(msec) loop =Endlosschleife bei 0
        images[0].save('test.gif',
                       save_all = True, append_images = images[1: len(images)],
                       duration = 500, loop = 0, optimaize = False)

Sie können eine solche GIF-Datei erstellen.

test.gif

Recommended Posts

Erstellen Sie eine GIF-Datei mit Pillow in Python
Erstellen Sie eine MIDI-Datei in Python mit pretty_midi
Erstellen Sie eine Binärdatei in Python
[GPS] Erstellen Sie eine kml-Datei mit Python
So erstellen Sie eine JSON-Datei in Python
Erstellen Sie eine Funktion in Python
Erstellen Sie ein Wörterbuch in Python
Erstellen Sie mit Selenium einen Datenerfassungsbot in Python
Erstellen Sie Ihre erste GDSII-Datei in Python mit gdspy
Erstellen Sie mit tkinter eine Python-GUI
Erstellen Sie einen DI-Container mit Python
Erstellen Sie eine zufällige Zeichenfolge in Python
Erstellen Sie eine einfache GUI-App in Python
[Python] Erstellen Sie eine Stapelumgebung mit AWS-CDK
Scraping von Websites mit JavaScript in Python
Erstellen Sie eine Deb-Datei aus einem Python-Paket
Zeichnen Sie mit graphviz eine Baumstruktur in Python 3
Dateioperationen in Python
Erstellen Sie Verknüpfungen, um Python-Dateien auf dem Terminal mit VScode auszuführen
Dateiverarbeitung in Python
[Python] Teilen Sie eine große Flask-Datei mit Blueprint
Lesen Sie eine Datei mit verstümmelten Linien in Python
Erstellen Sie ein Python-Modul
Erstellen Sie Spatia Lite in Python
Erstellen Sie eine Datei, die in der Skriptsprache ausgeführt werden kann
Ich möchte mit Python ein Fenster erstellen
Erstellen Sie in Python ein Diagramm der Standardnormalverteilung
Erstellen Sie eine virtuelle Umgebung mit conda in Python
Erstellen Sie eine Webmap mit Python und GDAL
Erstellen Sie mit python3 eine WAV-Datei aus dem GLSL-Shader
Dateimanipulation mit Python
Anzeigen von Arzneimittelbewertungen mithilfe von Listen in Python
Ich habe versucht, eine CSV-Datei mit Python zu lesen
Erstellen Sie in Python ein einfaches Momentum-Investmentmodell
Erstellen Sie eine neue Seite im Zusammenfluss mit Python
Erstellen Sie ein Datum / Uhrzeit-Objekt aus einer Zeichenfolge in Python (Python 3.3).
Führen Sie Python-Dateien mit Django aus HTML aus
Laden Sie Bilder von der URL mit Pillow in Python 3
Erstellen Sie mit Python eine Datei im Photoshop-Format (.psd)
Erstellen Sie in Python ein Paket mit globalen Befehlen
Erstellen Sie mit dem Python-Anforderungsmodul einen Datensatz mit Anhängen in KINTONE
Erstellen Sie eine Python-Umgebung
Erstellen Sie in KiCad ein Rahmenantennenmuster in Python
[Python] [Word] [python-docx] Versuchen Sie, mit python-docx eine Vorlage für einen Wortsatz in Python zu erstellen
[Docker] Erstellen Sie in 3 Minuten eine jupyterLab (Python) -Umgebung!
Testen Sie das Hochladen von Bildern, indem Sie in Python erstellen, ohne Dummy-Bilddateien in Django zu platzieren
Erstellen Sie in Python ein elliptisches Streudiagramm, ohne eine multivariate Normalverteilung zu verwenden
Analysieren Sie eine JSON-Zeichenfolge, die in eine Datei in Python geschrieben wurde
Abrufen des Dateinamens in einem Ordner mithilfe von glob
Laden Sie eine JPG-Datei mit der Google Drive-API in Python hoch
Versuchen Sie, eine komprimierte Datei mit Python und zlib zu erstellen
Registrieren Sie gemeinsam Daten im Firestore mithilfe der CSV-Datei in Python
[CRUD] [Django] Erstellen Sie eine CRUD-Site mit dem Python-Framework Django ~ 1 ~
[LINE Messaging API] Erstellen Sie mit Python ein umfangreiches Menü
Erstellen Sie eine Bilddatei mit PIL (Python Imaging Library).
[Python] Generieren Sie ValueObject mit dem vollständigen Konstruktor mithilfe von Datenklassen