2016-12-11 38 views
1
  • 我有png格式我想串(PIL)图片汇集成GIF动画
  • 名单要做到这一点,我目前使用的imageio
  • 但是,我无法找到一个方法来做到这产生质量好的GIF

据我所知,有两种类型的设置我可以改变。用于读取.png的imageio.imread()设置以及用于写入gif的imageio.mimwrite()设置。据imageio.help()imageio:如何提高输出gif的质量?

  1. imageio.imread()具有一个读放慢参数仅供PNG-PILignoregamma这需要一个布尔值。这不会改变我的输出gif。
  2. imageio.mimwrite()可以指两种格式。第一个是GIF-PIL。此格式的输出仅显示一帧,因此不合需要。 Output here
  3. imageio.mimwrite()具有第二种格式GIF-FI。这产生更有前途的输出具有以下选项:
    • 'quantizer':'wu'生成完整的gif与指定的帧和帧速率,但产生一个“损坏”种类-的质量Output here
    • 'quantizer':'nq'生成一个完整的gif,其质量比'wu'好,但不能很好地处理色差。注意右下角的图例倾向于改变它的颜色。 Output here

下面是最优质的相关代码,我能得到这么远(GIF-FInq

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) 

的函数调用包含完整的一个字符串列表参数将.png图像的路径编译为gif。

回答

0

GIF格式每帧只能处理256种颜色。 quantizer参数确定将用于查找这些颜色的方法。

控制使用哪种颜色的最佳方法可能是自行减少颜色数量(至256)。