【发布时间】:2017-04-26 09:01:51
【问题描述】:
- 我有一个 .png (PIL) 图像列表,我想将它们串成一个 gif 动画
- 为此,我目前正在使用
imageio库 - 但是,我无法找到一种方法来制作优质 gifs
据我所知,我可以更改两种类型的设置。 imageio.imread() 设置用于读取 .png,imageio.mimwrite() 设置用于编写 gif。根据imageio.help(),
-
imageio.imread()的 one 读取参数仅适用于PNG-PIL、ignoregamma,它采用布尔值。这不会改变我的输出 gif 图像。 -
imageio.mimwrite()可以引用两种格式。第一个是GIF-PIL。这种格式的输出只显示一帧,因此是不可取的。 Output here。 -
imageio.mimwrite()具有第二种格式GIF-FI。通过以下选项,这会产生更有希望的输出:-
'quantizer':'wu'生成具有指定帧和帧速率的完整 gif,但会产生“损坏”的质量。 Output here。 -
'quantizer':'nq'生成的完整 gif 具有比 'wu' 更好的“较少损坏”质量,但 不能很好地处理颜色。请注意右下角的图例如何改变其颜色。 Output here。
-
这是迄今为止我可以获得的最佳质量的相关代码(GIF-FI 和 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)
使用包含要编译为 gif 的 .png 图像的完整路径的字符串列表参数调用该函数。
【问题讨论】:
标签: python image animation gif freeimage