Programmatically Generate Video or Animated GIF in Python

| |

Home » Programmatically Generate Video or Animated GIF in Python

GIFs gibt es seit etwas mehr als 20 Jahren, und in dieser Zeit haben sie sich für viele zu einem bevorzugten Kommunikationsformat entwickelt. Sie können mehr sagen als Worte, indem sie nicht nur eine schnelle Aktion oder Antwort darstellen, sondern auch den Tonfall und die Gesichtszüge der Person oder Gruppe nachahmen, die ihre Botschaft auf unterhaltsame und informative Weise vermitteln will. In diesem Blogbeitrag geht es darum, wie man in Python programmatisch Videos oder animierte GIFs erzeugt. Ich nehme Sie mit auf eine Reise zur Erstellung animierter GIFs. Wir gehen durch den Prozess der Umwandlung Ihres Videomaterials in ein GIF, und dann zeige ich Ihnen, wie Sie ein animiertes GIF erstellen. Zum Schluss zeige ich Ihnen, wie Sie ein animiertes GIF mit mehreren Einzelbildern von Grund auf mit Bildern oder Filmmaterial erstellen können.

Themen, die in diesem Blogbeitrag behandelt werden:

  1. Video in Gif umwandeln.
  2. Wie man animierte Gifs erstellt.
  3. Gifs aus mehreren Bildern erstellen.
  4. Hinzufügen eines Schreibmaschineneffekts in einem Gif.

Voraussetzungen:

Python:

Um GIFs mit Python zu erstellen, müssen Sie Python 3.5+ auf Ihrem System haben. Sie können Python leicht auf Ihrem System installieren, indem Sie auf https://www.python.org/downloads/ gehen, die Software herunterladen und installieren.

Imageio:

Imageio ist eine Python-Bibliothek für die Arbeit mit Bildern. Diese Software ist so konzipiert, dass sie einfach zu installieren ist und auf Windows-, Mac- und Linux-Rechnern funktioniert. Sie liest und schreibt animierte Bilder, volumetrische Daten und wissenschaftliche Formate. Sie ist Open-Source und kann daher auf jedem Gerät mit Python 3.5+ installiert werden. Außerdem bietet die Benutzeroberfläche einige grundlegende, beschreibende statistische Messungen, die es Ihnen ermöglichen, das richtige Dateiformat (jpeg, png oder BMP) auf der Grundlage der erforderlichen Bildauflösung und Pixeldichte zu wählen. Um imageio zu installieren, verwenden Sie den folgenden Befehl in Ihrem System

pip install imageio imageio-ffmpeg

Pil:

PIL steht für Python Imaging Library und ist eine freie und quelloffene Sammlung von Werkzeugen, die zur Bearbeitung verschiedener Arten von Bildern verwendet werden. Diese Bibliothek ist hauptsächlich für die Unterstützung, das Lesen und Speichern (sowie den Import) von SVG- und Rasterdateien wie jpeg/BMP/png in verschiedenen Auflösungen konzipiert. Auf einige andere Bildformate wie tiff/xpm wird über externe Bibliotheken zugegriffen. PIL ist für Windows, Mac OS X, Linux, etc. verfügbar. Um PIL zu installieren, verwenden Sie den folgenden Befehl in Ihrem System

pip install pil

Hinweis: Bevor Sie die PIL-Bibliothek installieren, vergewissern Sie sich bitte, dass Ihr System nicht über eine Kissenbibliothek verfügt, da beide nicht gleichzeitig existieren können.

Schritt 1: Ein Video in ein GIF umwandeln

# import dependencies
import imageio
import os

# load the video file
clip = os.path.abspath('sample.mp4')

# create a function
def gifMkaker(inputPath, targetFormat):
    # giving a output path
    outputPath = os.path.splitext(inputPath)[0] + targetFormat

    print(f'converting {inputPath} \n to {outputPath}')

    reader = imageio.get_reader(inputPath)
    # define fps of the gif
    fps = reader.get_meta_data()['fps']

    writer = imageio.get_writer(outputPath, fps=fps)

    for frames in reader:
        writer.append_data(frames)
        print(f'Frame{frames}')
    print('done')
    writer.close()

gifMkaker(clip, '.gif')

Ausgabe

Schritt 2: Erstellen eines animierten GIFs

Ein Beispiel: Wir erstellen ein animiertes Gif mit einem animierten Kreis innerhalb des Quadrats 

# import dependencies from PIL import Image, ImageDraw

images = []

width = 700
center = width // 2
color_1 = (255, 255, 255)
color_2 = (0, 0, 0)
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('animated.gif',
              save_all=True, format='GIF', append_images=images[1:], optimize=False, duration=40, loop=0)

Hier ist die Aufschlüsselung des obigen Codes:

  1. Initialisieren Sie eine leere Liste in der Bildvariablen.
  2. Hier haben wir die Farbbreite und den Radius des Gifs beschrieben.
  3. Erstellen einer for-Schleife für das gif, damit es automatisch ausgeführt wird.
  4. Speichern Sie die Bilder mit format=’GIF‘ und append_images=frames[1:].
  5. Jedes Bild läuft 40ms lang (Dauer=40).
  6. Das GIF-Bild wird in einer Endlosschleife angezeigt (loop=0).

Ausgabe

Schritt 3: Erstellen eines GIFs mit Bildern

Um ein animiertes Gif zu erstellen, müssen wir zunächst die Bilder im .png-Format zusammenfügen, sie in einem einzigen Ordner speichern und sie mit einer aufsteigenden Nummer benennen.

Für dieses Tutorial können Sie PIL oder convert verwenden, zwei Programme, die als Python-Zusatzprogramme fungieren und Bildumwandlungsfunktionen ermöglichen. Sie können auch nur Python verwenden, um diese Funktionen auszuführen, wenn Sie keine zusätzlichen Programme herunterladen möchten:

from PIL import Image
import glob

# Create the frames
frames = []
imgs = glob.glob("*.png")
for i in imgs:
    new_frame = Image.open(i)
    frames.append(new_frame)

# Save the png images into a GIF file that loops forever
frames[0].save('png_to_gif.gif', format='GIF',
              append_images=frames[1:],
              save_all=True,
              duration=300, loop=0)

Ausgabe

Schritt -4: Erstellen einer GIF-Datei mit Text

Hier erstellen wir eine Art animierte Gif-Datei mit Text. Der Text wird in Schreibmaschineneffekt angezeigt.

Abhängigkeiten importieren:

from PIL import Image, ImageDraw, ImageFont
from IPython.display import display, HTML
import os

Konfigurieren Sie das Aussehen der gif-Datei:

def create_image_with_text(size, text):
    img = Image.new('RGB', (600, 70), "black")
    draw = ImageDraw.Draw(img)
    draw.text((size[0], size[1]), text, font = fnt, fill="green")
    return img

Erstellen Sie die Rahmen:

frames = []

def roll(text):

    for i in range(len(text)+1):
        new_frame = create_image_with_text((0,0), text[:i])
        frames.append(new_frame)
 
fnt = ImageFont.truetype("arial", 36)

Fügen Sie den Text hinzu, den Sie in dem Gif anzeigen möchten:

TXT = """

Hello

How are you

My name is Neeraj

Welcome to geekyhuman

You can find a great tutorial on python

""".splitlines()

# text is a line of all text
[roll(text) for text in TXT]

Speichern Sie es in einem gif-Format, das in einer Endlosschleife (loop=0) läuft:

frames[0].save('banner_a.gif', format='GIF',
              append_images=frames[1:], save_all=True, duration=60, loop=0)
os.startfile("banner_a.gif")

print('done')

Ausgabe

Letzte Worte

Wir hoffen, dass Ihnen dieses Tutorial über die Erstellung von GIFs mit Python gefallen hat. Wir haben uns damit beschäftigt, wie man Videos in GIFs umwandelt, wie man GIFs mit Bildern erstellt, wie man animierte GIFs erstellt und wie man einen Schreibmaschineneffekt in einer GIF-Datei erzeugt. Mit anderen Worten können wir sagen, dass wir gelernt haben, wie man programmatisch Videos oder animierte GIFs in Python erzeugt. Mit diesem Wissen können Sie die Erstellung Ihrer animierten GIFs zum Spaß oder zum Teilen mit anderen automatisieren. Worauf warten Sie also noch? Probieren Sie es noch heute aus, indem Sie den Code kopieren und in Ihren Python-Interpreter einfügen!

Spread the love
 
   
Vorheriger

Wie erstellt man ein CLI in Python?

Wie versende ich mehrere Twilio-SMS?

Nächster

Schreibe einen Kommentar