Генерация GIF с Wand независимо от расширения имени файла - PullRequest
1 голос
/ 08 февраля 2020

Есть ли способ заставить 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). Документация гласит, что желаемый формат можно установить в поле format.

Почему расширение в filename имеет более высокий приоритет, чем Image.format?

Версия Wand, о которой идет речь, - 0.5.8.

UPD: Просто, чтобы уточнить, расхождение в моем вопросе является преднамеренным. Меня интересует случай, когда для .format установлено значение "gif", но имя файла в .save() передается с неправильным расширением ".jpg", и мне интересно, есть ли способ создать один gif в этом случае. Если расширение имени файла установлено на «.gif», все работает нормально.

1 Ответ

2 голосов
/ 08 февраля 2020

Это прекрасно работает для меня с Wand 0.5.7 и Imagemagick 6.9.10.91 Q16 Ma c 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: как gif.save(filename='GIF:image.jpg'). Однако я бы не советовал этого делать, поскольку некоторые инструменты используют только суффикс для определения формата файла. Поэтому они будут выдавать ошибку при попытке прочитать анимацию GIF в формате JPG.

(Спасибо Эри c МакКонвиллу за указатели о том, как добавить задержку и GIF: предисловие).

...