Skip to content

Wie man ein animiertes GIF mit Pillow in Python erstellt

Python

Dieser Artikel genau, wie Sie mit Pillow in Python ein animiertes GIF erstellen.

  • So erstellen Sie GIF aus Bildern mit Image.save()
  • Beispielcode zum Erstellen von animiertem GIF
  • Parameter von Image.save()
    • append_images
    • optimieren
    • Schleife
    • Dauer

So erstellen Sie GIF aus Bildern mit Image.save()

Sie können ein animiertes GIF aus mehreren Bildern erstellen und mit Image.save() speichern.

im.save('.gif', save_all=True, append_images=[im1, im2, ...])

Die Bildliste [im1, im2, …] WIRD zum ersten Frame, im, hinzugefügt und eine animierte GIF-Datei .gif wird generiert und gespeichert.

Nichts finden Sie im unten stehenden offiziellen Dokument.

Der Beispielcode und die Erläuterung der Parameter sind unten dargestellt.

Beispielcode zum Erstellen von animiertem GIF

Hier ist ein Beispielcode zum Zeichnen von Kreisen, sterben mit alltäglichem ImageDraw von Pillow wachsen, und zum Speichern als GIF-Datei.

from PIL import Image, ImageDraw

images = []

width = 200
center = width // 2
color_1 = (0, 0, 0)
color_2 = (255, 255, 255)
max_radius = int(center * 1.5)
step = 8

for i in range(0, max_radius, step):
    im = Image.new('RGB', (width, width), color_1)
    draw = ImageDraw.Draw(im)
    draw.ellipse((center - i, center - i, center + i, center + i), fill=color_2)
    images.append(im)

for i in range(0, max_radius, step):
    im = Image.new('RGB', (width, width), color_2)
    draw = ImageDraw.Draw(im)
    draw.ellipse((center - i, center - i, center + i, center + i), fill=color_1)
    images.append(im)

images[0].save('data/dst/pillow_imagedraw.gif',
               save_all=True, append_images=images[1:], optimize=False, duration=40, loop=0)

Die folgende animierte GIF-Datei wird generiert.

Kissen gif

Im following Artikel erfahren Sie, wie Sie mit Pillow Figuren wie Kreise zeichnen.

Parameter von Image.save()

Wenn Sie Eine Liste mit Bildern haben, können Sie grundsätzlich ein animiertes GIF mit dem following Code erstellen:

images[0].save('data/dst/pillow_imagedraw.gif',
               save_all=True, append_images=images[1:], optimize=False, duration=40, loop=0)

If SIE Eine GIF-Animation aus mehreren vorhandenen Bildern erstellen möchten, anstatt wie im Beispiel Grafiken zu zeichnen und Bilder zu erstellen, can SIE tun, Indem Sie die gleichen Bilder laden und in einer Liste speichern.

append_images

Rufen Sie die save()-Methode vom ersten Frame-Bild aus auf und übergeben Sie die Liste der tiefliegenden Bilder an append_images.

Beachten Sie, dass bei Verwendung von append_images=images der erste Frame zweimal wiederholt wird. Im Beispiel Beispiel werden das zweite und alle weiteren Bilder durch Auflagen ausgewählt.

optimieren

Ich habe den Quellcode nicht richtig gelesen, daher weiß ich nicht, welche Verarbeitung durchgeführt wird, aber wenn die Standardeinstellung (optimize=True) used WIRD, können ähnliche Bilder weggelassen Werden.

Wenn die Ausgabedatei falsch ist, kann es durch den Versuch von optimize=False behoben werden.

Schleife

Stellen Sie die Anzahl der Loops auf Loop ein. Wenn Sie loop=0 setzen, wird es zu einer Endlosschleife.

Beachten Sie, dass die Animation zunächst einmal endet.

Dauer

Stellen Sie die Anzeigezeit jedes Frames auf die Dauer in Millisekunden ein. Ist der Wert zu klein, wird er ignoriert.