【问题标题】:imageio: How to increase quality of output gifs?imageio:如何提高输出 gif 的质量?
【发布时间】:2017-04-26 09:01:51
【问题描述】:
  • 我有一个 .png (PIL) 图像列表,我想将它们串成一个 gif 动画
  • 为此,我目前正在使用imageio
  • 但是,我无法找到一种方法来制作优质 gifs

据我所知,我可以更改两种类型的设置。 imageio.imread() 设置用于读取 .png,imageio.mimwrite() 设置用于编写 gif。根据imageio.help()

  1. imageio.imread()one 读取参数仅适用于 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)

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

【问题讨论】:

    标签: python image animation gif freeimage


    【解决方案1】:

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

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

    【讨论】:

    • 有没有比 imageio 更好的工具来制作高质量的 gif?
    • 质量直接取决于图像降级为 256 色的方式,即量化算法。在 imageio 中,GIF-PIL 似乎使用了 Neuquant 算法,而GIF-FI 提出了 Wu 或 Dekker。其他算法(甚至手动调整)可能会根据您的图像提供更好的结果。
    猜你喜欢
    • 1970-01-01
    • 2012-07-15
    • 2017-08-16
    • 2011-10-02
    • 1970-01-01
    • 2016-11-30
    • 1970-01-01
    • 1970-01-01
    • 2023-03-06
    相关资源
    最近更新 更多