gpt4 book ai didi

python - 使用 Python Wand 只播放一次 GIF

转载 作者:行者123 更新时间:2023-12-04 13:59:58 30 4
gpt4 key购买 nike

我可以像这样创建一个动画 GIF:

from wand.image import Image

with Image() as im:
while i_need_to_add_more_frames():
im.sequence.append(Image(blob=get_frame_data(), format='png'))
with im.sequence[-1] as frame:
frame.delay = calculate_how_long_this_frame_should_be_visible()
im.type = 'optimize'
im.format = 'gif'
do_something_with(im.make_blob())

但是,像这样创建的图像会无限循环。这一次,我希望它循环一次,然后停止。我知道我可以使用 convert-loop参数,如果我使用命令行界面。但是,我无法使用 Wand API 找到如何执行此操作。

我应该调用什么方法,或者我应该设置什么字段,以使生成的 GIF 循环恰好一次?

最佳答案

您需要使用 ctypes将魔杖库绑定(bind)到正确的 C-API 方法。
幸运的是,这很简单。

import ctypes
from wand.image import Image
from wand.api import library

# Tell Python about the C-API method.
library.MagickSetImageIterations.argtypes = (ctypes.c_void_p, ctypes.c_size_t)

with Image() as im:
while i_need_to_add_more_frames():
im.sequence.append(Image(blob=get_frame_data(), format='png'))
with im.sequence[-1] as frame:
frame.delay = calculate_how_long_this_frame_should_be_visible()
im.type = 'optimize'
im.format = 'gif'
# Set the total iterations of the animation.
library.MagickSetImageIterations(im.wand, 1)
do_something_with(im.make_blob())

关于python - 使用 Python Wand 只播放一次 GIF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51217433/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com