Ich möchte numpy Arrays in Bilder verwandeln können. Zuerst habe ich gelernt, wie man ein 3D-Array (hight x width x color
) in ein Bild umwandelt. Nach einigen Recherchen scheint mir PIL (oder Pillow) der natürlichste Weg dafür zu sein. Dies ist, wie ich es im Moment tun (und es funktioniert gut):Kann eine GIF-Animation nur mit der Pillow-Bibliothek erstellt werden?
from PIL import Image
import numpy as np
if __name__ == '__main__':
h = 4
w = 8
arr = np.zeros((h,w,3), dtype=np.uint8)
arr[0, 0, :] = [255,255,0]
arr[3, 7, :] = [0,255,0]
img = Image.fromarray(arr, 'RGB')
img.save('viz.png')
Als nächsten Schritt möchte ich eine Liste von 3D-Array nehmen können (oder ein 4D-Array, wo die Zeit ist die zusätzliche Dimension) und erzeugt die entsprechende Animation. So weit, ich habe nicht gefunden, wie es geht.
Es sieht so aus, als könnte Pillow gif-animation lesen. Mit ImageSequence können wir auf seine Frames zugreifen. Ich kann jedoch nicht herausfinden, wie man eine Sequenz von Bildern in eine Animation einfügen kann.
Ich sah einige Lösungen, die ìmages2gif
verwenden, aber ich möchte in einer einzigen Bibliothek bleiben.
ADDED
Die Antworten here meine Frage nicht beantworten. Sie verwenden gifmaker
Bibliothek, die ich nicht einmal per Pip installieren kann.
Mögliche Duplikat [Speichern eines animierten GIF in Pillow] (http://stackoverflow.com/questions/24688802/saving-an-animated-gif-in- Kissen) – Reti43
@ Reti43, Nein, ich möchte es in Kissen tun und die Antwort dort 'gifmaker' verwendet. – Roman
Welches ist ein Skript von Pillow, das eine Wrapper-Funktion zum Aufrufen von 'Image.save()' mit einem speziellen Parameter ist. Funktioniert das nicht für dich? – Reti43