- Ich habe eine Liste von .png (PIL) Bildern I
- Um dies zu tun zusammen in eine animierte gif bespannen will, ich bin derzeit mit der
imageio
Bibliothek - Aber ich kann nicht einen Weg finden, zu tun dieser gute Qualität Gifs
Was zu produzieren, wie ich weiß, gibt es zwei Arten von Einstellungen, die ich ändern kann. Die imageio.imread()
Einstellungen zum Lesen von PNGs und die imageio.mimwrite()
Einstellungen zum Schreiben von Gifs. Nach imageio.help()
,imageio: Wie kann man die Qualität der ausgegebenen Gifs erhöhen?
imageio.imread()
hat ein Lese Paramter nur fürPNG-PIL
,ignoregamma
die einen boolean nimmt. Das ändert nichts an meinen Ausgabe-Gifs.imageio.mimwrite()
kann auf zwei Formate verweisen. Die erste istGIF-PIL
. Die Ausgabe von diesem Format zeigt nur einen Rahmen und ist daher unerwünscht. Output here.imageio.mimwrite()
hat das zweite FormatGIF-FI
. Dies erzeugt vielversprechende Ausgänge mit den folgenden Optionen:'quantizer':'wu'
mit bestimmten Frames und Frameraten eine vollständige gif erzeugt, aber erzeugt eine ‚korrumpiert‘ Art-Qualitäts. Output here.'quantizer':'nq'
erzeugt ein volles gif mit besserer "weniger korrodierter" Qualität als "wu", aber behandelt nicht gut Farbe. Beachten Sie, dass die Legende unten rechts dazu neigt, ihre Farbe zu ändern. Output here.
Hier ist der entsprechende Code für die beste Qualität, die ich bisher bekommen kann (GIF-FI
mit nq
)
def gen_gif(self, datetime_list):
kwargs_write = {'fps':5.0, 'quantizer':'nq'}
frames = []
for datetime in datetime_list:
frames.append(imageio.imread(datetime+'.png'))
exportname = '{} to {}.gif'.format(datetime_list[0], datetime_list[-1])
imageio.mimsave(exportname, frames, 'GIF-FI', **kwargs_write)
Die Funktion mit einer Liste Parametern von Strings aufgerufen wird mit dem vollständigen Pfad zu den .png Bildern, die zum gif kompiliert werden sollen.