


Einführung in Pythons Analyse und Synthese dynamischer GIF-Grafiken
Der Inhalt dieses Artikels ist eine Einführung in die Analyse- und Syntheseoperationen der Verarbeitung dynamischer GIF-Bilder. Ich hoffe, dass er für Sie hilfreich ist.
Das Beispiel in diesem Artikel beschreibt die Analyse und Synthese dynamischer GIF-Grafiken in der Python-Bildverarbeitung. Ich möchte es als Referenz mit Ihnen teilen:
Gif-animierte Bilder sind mittlerweile an der Tagesordnung, und im Freundeskreis streiten sich die Leute oft darum, wenn sie anderer Meinung sind. Hier werde ich vorstellen, wie man Python zum Parsen und Generieren von GIF-Bildern verwendet.
1. Synthese der GIF-Animation
Wie unten gezeigt, handelt es sich um eine GIF-Animation.
Sie können das PIL
Bildmodul verwenden, um das dynamische GIF-Bild zu analysieren. Der spezifische Code lautet wie folgt:
#-*- coding: UTF-8 -*- import os from PIL import Image def analyseImage(path): ''' Pre-process pass over the image to determine the mode (full or additive). Necessary as assessing single frames isn't reliable. Need to know the mode before processing all frames. ''' im = Image.open(path) results = { 'size': im.size, 'mode': 'full', } try: while True: if im.tile: tile = im.tile[0] update_region = tile[1] update_region_dimensions = update_region[2:] if update_region_dimensions != im.size: results['mode'] = 'partial' break im.seek(im.tell() + 1) except EOFError: pass return results def processImage(path): ''' Iterate the GIF, extracting each frame. ''' mode = analyseImage(path)['mode'] im = Image.open(path) i = 0 p = im.getpalette() last_frame = im.convert('RGBA') try: while True: print "saving %s (%s) frame %d, %s %s" % (path, mode, i, im.size, im.tile) ''' If the GIF uses local colour tables, each frame will have its own palette. If not, we need to apply the global palette to the new frame. ''' if not im.getpalette(): im.putpalette(p) new_frame = Image.new('RGBA', im.size) ''' Is this file a "partial"-mode GIF where frames update a region of a different size to the entire image? If so, we need to construct the new frame by pasting it on top of the preceding frames. ''' if mode == 'partial': new_frame.paste(last_frame) new_frame.paste(im, (0,0), im.convert('RGBA')) new_frame.save('%s-%d.png' % (''.join(os.path.basename(path).split('.')[:-1]), i), 'PNG') i += 1 last_frame = new_frame im.seek(im.tell() + 1) except EOFError: pass def main(): processImage('test_gif.gif') if __name__ == "__main__": main()
Das Analyseergebnis ist wie folgt Dies zeigt, dass das Bild tatsächlich aus 14 statischen Bildern derselben Auflösung besteht
2. Synthese von dynamische GIF-Bilder
Gif-Bildsynthese unter Verwendung der imageio
Bibliothek (https://pypi.python.org/pypi/imageio)
Der Code ist wie folgt folgt:
#-*- coding: UTF-8 -*- import imageio def create_gif(image_list, gif_name): frames = [] for image_name in image_list: frames.append(imageio.imread(image_name)) # Save them as frames into a gif imageio.mimsave(gif_name, frames, 'GIF', duration = 0.1) return def main(): image_list = ['test_gif-0.png', 'test_gif-2.png', 'test_gif-4.png', 'test_gif-6.png', 'test_gif-8.png', 'test_gif-10.png'] gif_name = 'created_gif.gif' create_gif(image_list, gif_name) if __name__ == "__main__": main()
Verwenden Sie hier Die 8 Bilder in den im ersten Schritt analysierten Bildern haben ein Intervall von 0,1 s. Das neue dynamische GIF-Bild wird wie folgt synthetisiert:
Das obige ist der detaillierte Inhalt vonEinführung in Pythons Analyse und Synthese dynamischer GIF-Grafiken. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Lösung für Erlaubnisprobleme beim Betrachten der Python -Version in Linux Terminal Wenn Sie versuchen, die Python -Version in Linux Terminal anzuzeigen, geben Sie Python ein ...

Bei der Verwendung von Pythons Pandas -Bibliothek ist das Kopieren von ganzen Spalten zwischen zwei Datenrahmen mit unterschiedlichen Strukturen ein häufiges Problem. Angenommen, wir haben zwei Daten ...

Alternative Verwendung von Python -Parameteranmerkungen in der Python -Programmierung, Parameteranmerkungen sind eine sehr nützliche Funktion, die den Entwicklern helfen kann, Funktionen besser zu verstehen und zu verwenden ...

Wie lösten Python -Skripte an einem bestimmten Ort die Ausgabe in Cursorposition? Beim Schreiben von Python -Skripten ist es üblich, die vorherige Ausgabe an die Cursorposition zu löschen ...

Erste Schritte mit Python: Hourglas -Grafikzeichnung und Eingabeüberprüfung In diesem Artikel wird das Problem der Variablendefinition gelöst, das von einem Python -Anfänger im Hourglass -Grafikzeichnungsprogramm auftritt. Code...

Die Untersuchung von Rissverifizierungscodes unter Verwendung von Python in täglichen Netzwerkinteraktionen sind ein häufiger Sicherheitsmechanismus, um eine schädliche Manipulation automatisierter Programme zu verhindern ...

Viele Entwickler verlassen sich auf PYPI (PythonpackageIndex) ...

Auswahl der Python-plattformübergreifenden Desktop-Anwendungsentwicklungsbibliothek Viele Python-Entwickler möchten Desktop-Anwendungen entwickeln, die sowohl auf Windows- als auch auf Linux-Systemen ausgeführt werden können ...
