6

我已经能够创建无限循环使用 PIL 没有问题的动画 gif,通常以类似的结尾

final_image.save('/path/to/images/some.gif, save_all=True, append_images=frames_images, duration=frame_speeds, loop=0)

我现在处于一种情况,我想创建一个播放一次且不循环播放的 gif。我使用的 PIL 文档¹对循环参数非常清楚,但对我的情况没有提供任何建议:

loop : int
迭代次数。默认 0(表示无限循环)。

0 导致它无限循环。1 导致它循环一次(播放两次)。我尝试过 -1 和 None 之类的选项,但找不到有效的参数。我目前正在使用一种解决方法,之后我会调用 gifsicle 来完全删除循环,但希望 PIL 能够原生支持它

¹ - https://imageio.readthedocs.io/en/stable/format_gif-pil.html

4

2 回答 2

4

如果您使用的是 Pillow,则可以省略循环参数。这将确保没有循环。 https://pillow.readthedocs.io/en/stable/handbook/image-file-formats.html#saving 另外需要注意的是,持续时间以毫秒为单位,而不是秒。

于 2019-10-25T14:38:46.287 回答
0

多么有趣的巧合。我有一个代码显示 GIF 一次迭代,然后冻结直到 mp3 文件完成......但我需要一个无限循环的 GIF。

唯一的区别是我使用了库moviepy。


工作解决方案:

from moviepy.editor import *
import moviepy.editor as mp


# Import the audio(Insert to location of your audio instead of audioClip.mp3)
audio = AudioFileClip("PATH/TO/MP3_FILE")

clip = VideoFileClip("PATH/TO/GIF_FILE").set_duration(audio.duration)


# Set the audio of the clip
clip = clip.set_audio(audio)


clip_resized = clip.resize((1920, 1080)) 


# Export the clip
clip_resized.write_videofile("movie_resized.mp4", fps=24)
于 2021-09-20T13:42:15.533 回答