独立于文件扩展名使用 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:前言)。
有没有办法强制 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:前言)。