如何使用 Wand 在 Python 中创建动画 gif?
How do I create an animated gif in Python using Wand?
Wand docs中的说明非常简单,可用于读取序列图像(例如动画 gif、图标文件等):
>>> from wand.image import Image
>>> with Image(filename='sequence-animation.gif') as image:
... len(image.sequence)
...但我不确定如何创建。
在 Ruby 中,使用 RMagick 很容易,因为您有 ImageList
s。 (有关示例,请参阅 my gist。)
我尝试创建一个 Image
(作为 "container")并使用图像路径实例化每个 SingleImage
,但我很确定这是错误的,特别是因为构造函数文档for SingleImage
不寻找最终用户使用。
我也尝试创建一个 wand.sequence.Sequence
并从那个角度出发,但也遇到了死胡同。我感到很失落。
最好的示例位于代码附带的单元测试中。 wand/tests/sequence_test.py
例如。
要使用魔杖创建动画 gif,请记住将图像加载到序列中,然后在加载所有帧后设置额外的 delay/optimize 处理。
from wand.image import Image
with Image() as wand:
# Add new frames into sequance
with Image(filename='1.png') as one:
wand.sequence.append(one)
with Image(filename='2.png') as two:
wand.sequence.append(two)
with Image(filename='3.png') as three:
wand.sequence.append(three)
# Create progressive delay for each frame
for cursor in range(3):
with wand.sequence[cursor] as frame:
frame.delay = 10 * (cursor + 1)
# Set layer type
wand.type = 'optimize'
wand.save(filename='animated.gif')
Wand docs中的说明非常简单,可用于读取序列图像(例如动画 gif、图标文件等):
>>> from wand.image import Image
>>> with Image(filename='sequence-animation.gif') as image:
... len(image.sequence)
...但我不确定如何创建。
在 Ruby 中,使用 RMagick 很容易,因为您有 ImageList
s。 (有关示例,请参阅 my gist。)
我尝试创建一个 Image
(作为 "container")并使用图像路径实例化每个 SingleImage
,但我很确定这是错误的,特别是因为构造函数文档for SingleImage
不寻找最终用户使用。
我也尝试创建一个 wand.sequence.Sequence
并从那个角度出发,但也遇到了死胡同。我感到很失落。
最好的示例位于代码附带的单元测试中。 wand/tests/sequence_test.py
例如。
要使用魔杖创建动画 gif,请记住将图像加载到序列中,然后在加载所有帧后设置额外的 delay/optimize 处理。
from wand.image import Image
with Image() as wand:
# Add new frames into sequance
with Image(filename='1.png') as one:
wand.sequence.append(one)
with Image(filename='2.png') as two:
wand.sequence.append(two)
with Image(filename='3.png') as three:
wand.sequence.append(three)
# Create progressive delay for each frame
for cursor in range(3):
with wand.sequence[cursor] as frame:
frame.delay = 10 * (cursor + 1)
# Set layer type
wand.type = 'optimize'
wand.save(filename='animated.gif')