【发布时间】:2019-02-11 00:34:49
【问题描述】:
我已经能够使用 PIL 创建无限循环的动画 gif,而不会出现问题,通常以类似
的方式结束final_image.save('/path/to/images/some.gif,
save_all=True,
append_images=frames_images,
duration=frame_speeds,
loop=0)
我现在处于一种情况,我想创建一个播放一次且不循环播放的 gif。我使用的 PIL 文档¹对循环参数非常清楚,但对我的情况没有提供任何建议:
循环:int
迭代次数。默认 0(表示无限循环)。
0 导致它无限循环。 1 导致它循环一次(播放两次)。我尝试了 -1 和 None 之类的选项,但找不到有效的参数。我目前正在使用一种解决方法,之后我会调用 gifsicle 以完全删除循环,但希望 PIL 能够原生支持这一点
¹ - https://imageio.readthedocs.io/en/stable/format_gif-pil.html
【问题讨论】:
-
当然 loop=1 意味着它循环(并因此播放)一次,而不是您建议的两次?
-
@Gavin 不幸的是,loop=1 似乎导致序列播放两次
-
可能取决于 imageio / 枕头的版本 - 请参阅以下合并请求,因为它似乎是旧版本的 imageio 和 一些 gif 播放器之间的不兼容(即 chrome for实例)。 imageio merge request
-
@user1026361 您似乎偶然发现了 Pillow for Python 当前发行版中的一个错误。我能够复制您的问题,实际上,当通过
loop=n时,GIF 将始终循环n+1次 - 我只能建议将其作为错误提交给维护者并使用您的解决方法暂时强制执行单个循环.请注意,@Gavin 是正确的,问题是相关的 - Chrome 会为n=1循环两次,而一些观众只循环一次(而其他人则无休止地循环相同的 .gif) -
谢谢@Grismar 和 Gavin - 我从来没有遇到过 PIL 的问题,也没有认为这可能是一个错误。我将继续我的工作并与维护者跟进
标签: python python-imaging-library gifsicle