独立于文件扩展名使用 Wand 生成 gif

Generating gif with Wand independently of filename extension

有没有办法强制 Wand 以 .gif 动画格式保存图像,而不管作为 filename 传递给 Image.save() 的是什么?

with Image() as gif:
    gif.sequence = frames  # 10 images
    gif.format = 'gif'
    gif.save(filename='image.jpg')

这段代码创建了 10 个带编号的 jpg-s,但我希望它创建一个文件(image.jpg 实际上是一个 gif)。 documentation 表示可以在 format 字段中设置所需的格式。

为什么 filename 中的扩展比 Image.format 中的扩展具有更高的优先级?

有问题的 Wand 版本是 0.5.8。

UPD:澄清一下,我的问题中的差异是故意的。我对 .format 设置为 "gif" 但 .save() 中的文件名以错误的扩展名“.jpg”传递的情况很感兴趣,我想知道是否有在这种情况下生成单个 gif 的方法。如果文件扩展名设置为“.gif”,一切正常。

我用 Wand 0.5.7 和 Imagemagick 6.9.10.91 Q16 效果很好 Mac OSX

from wand.image import Image

with Image(filename='desktop5_anim.gif') as img:
    img.format = 'gif'
    img.save(filename='desktop5_anim2.gif')


这也适用于创建动画。

from wand.image import Image

with Image(filename='lena.jpg') as imgA:
    with Image(filename='zelda1.jpg') as imgB:
        imgA.sequence.append(imgB)
        for frame in imgA.sequence:
            frame.delay = 50
    imgA.loop = 0
    imgA.format = 'gif'
    imgA.save(filename='lena_zelda_anim.gif')


如果您打算在文件名中保留“.jpg”后缀,那么无论后缀如何,输出文件实际上都是 GIF 动画,如果您在文件名前加上 GIF: as gif.save(filename='GIF:image.jpg')。但是,我真的不建议这样做,因为某些工具仅使用后缀来决定文件的格式。因此,在尝试将 GIF 动画读取为 JPG 时,他们会报错。

(感谢 Eric McConville 提供有关如何添加延迟的指示以及 GIF:前言)。