Как изменить размер gif, не деформируясь и удалить пустой белый регион, когда он обрезается?

Ниже размеров gif 600*800. Высота составляет 800 пикселей, таким образом, существует много пробела внизу, я хочу удалить.

source gif: old.gif

Это было сохранено как old.gif:

file old.gif 
old.gif: GIF image data, version 89a, 600 x 800

Измененный с командой преобразования:

convert old.gif -coalesce temp.gif
convert -size 600x800 temp.gif -resize 600x400! new.gif

средства игнорируют соотношение сторон, не сохраняйте соотношение сторон неизменным.
Вот результат:

squashed gif

Новый файл new.gif деформирован.

Как я могу изменить размер gif, не деформируя его?

Моя попытка с -crop аргумент.

convert old.gif -crop 600x400+0+0 new.gif

cropped gif with whitespace

Как удалить пустой регион в new.gif?

Пустой белый регион очевиден в Firefox. convert old.gif -crop 600x400+0+0 new.gif не может удалить пустой белый регион в new.gif.

gif in browser

Используя repage аргумент удалит пустой белый регион, но он делает gif более размытое.

convert old.gif -crop 600x400+0+0 -trim  +repage  new.gif    

blurry gif

1
задан 3 October 2018 в 10:10

1 ответ

Использовать ! после разрешения, данного -crop:

convert old.gif -crop 600x400+0+0\! new.gif

enter image description here

Из imagemagick документов:

От версии 6.2.4-5 ImageMagick можно добавить новый специальный флаг к"-crop"аргумент. Этот флаг'!'скажет обрезке корректировать Виртуальную информацию о Холсте возвращенного изображения так, чтобы это было относительно обрезанной области.

...

Заметьте, как размер холста изображения, возвращенного теперь, соответствует области, в которой было обрезано изображение.

3
ответ дан 3 December 2019 в 07:23

Другие вопросы по тегам:

Похожие вопросы: