2016-12-11 13 views
1
  • J'ai une liste d'images .png (LIP) Je veux enchaîner dans un fichier GIF animé
  • Pour ce faire, je suis actuellement en utilisant la bibliothèque imageio
  • Cependant, je ne peux pas trouver un moyen de faire ce pour produire bonne qualité gifs

pour autant que je sache, il existe deux types de paramètres que je peux changer. Les paramètres imageio.imread() pour la lecture des fichiers .pngs et les paramètres imageio.mimwrite() pour l'écriture des fichiers gifs. Selon imageio.help(),imageio: Comment augmenter la qualité des GIF de sortie?

  1. imageio.imread() a une lecture paramter seulement pour PNG-PIL, ignoregamma qui prend une valeur booléenne. Cela ne change rien pour mes gifs de sortie.
  2. imageio.mimwrite() peut faire référence à deux formats. Le premier est GIF-PIL. La sortie de ce format ne montre qu'une seule trame, et n'est donc pas souhaitable. Output here.
  3. imageio.mimwrite() a le deuxième format GIF-FI. Cela produit des résultats plus prometteurs avec les options suivantes:
    • 'quantizer':'wu' génère un fichier GIF complet avec images spécifiées et des taux de trame, mais produit un « corrompu » de type de qualité. Output here.
    • 'quantizer':'nq' génère un gif complet avec une meilleure qualité 'moins corrompue' que 'wu', mais ne gère pas bien la couleur. Remarquez comment la légende en bas à droite a tendance à changer de couleur. Output here.

Voici le code correspondant pour la meilleure qualité que je pourrais obtenir jusqu'à présent (GIF-FI avec 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) 

La fonction est appelée avec un paramètre de liste de chaînes contenant le plein chemin vers les images .png à compiler vers le gif.

Répondre

0

Le format GIF ne peut gérer que 256 couleurs par image. Le paramètre quantizer détermine la méthode qui sera utilisée pour trouver ces couleurs.

La meilleure façon de contrôler les couleurs utilisées est probablement de réduire le nombre de couleurs (jusqu'à 256) par vous-même.