Я хочу изменить размер такого анимированного GIF-файла do.gif
Если я это сделаю, convert do.gif -resize 24x24\! do-24.gif
я получу его изменение в do-24.gif, но не анимированный
Как правильно изменить размер, чтобы получить ту же анимацию?
imagemagick
Zuba
источник
источник
-coalesce
«Создает полный вид анимации в каждой точке, немного похожий на настоящую киноленту, а не на последовательность анимации. Такая последовательность, известная как коалесцированная анимация , намного легче изучать, редактировать, модифицировать и повторно оптимизировать».gifsicle --resize 24x24 > do-24.gif
может к этому тожеЯ искал решение для imagemagick, поскольку я знаком с ним, но в конце концов я согласился с предложением @ sam
gifsicle
. Он сделал то, что я хотел, без хлопот.Можно оптимизировать размер получаемого файла разными способами, но я просто уменьшил размер и уменьшил количество цветов. Работал как шарм:
источник
-coalesce
+-deconstruct
После
-coalesce
вы, вероятно, захотите добавить-deconstruct
:Основной причиной проблемы является то, что ваш входной GIF был должным образом свернут: GIF позволяет следующему кадру быть просто измененным прямоугольником из предыдущего со смещением.
-coalesce
затем расширяет все кадры до исходного размера, что заставляет работать с изменением размера, но это не повторно сжимает кадры снова как ваше входное изображение:-deconstruct
это необходимо для этого!Использование тестовых данных из этого ответа: Как создать анимированный GIF из неподвижных изображений (желательно с командной строкой)? мы можем видеть это ясно с
identify
:out.gif
из-coalesce.gif
из-deconstruct.gif
Во-первых, мы видим, как входной файл,
out-convert.gif
на самом деле, был сжат, поскольку кадр 2 только516x516
со смещением252+257
, в то время как полноразмерный кадр 11024x1024
.Затем, если мы сравним три преобразования:
out.gif
: Все кадры256x256
или больше, и огромные, около 5MiB, почему?Визуально неверно, поскольку эти приблизительно
256x256
кадры имеют ненулевое смещение, например,125+128
для кадра 2!out-coalesce.gif
: все кадры имеют256x256
и имеют правильное смещение0+0
.Вывод выглядит визуально правильным, но размер выходного файла составляет 2,0 МБ, что больше, чем
out-deconstruct.gif
out-deconstruct.gif
: сжатые кадры, конечный размер вывода 1,9 МиБ.Не намного меньше, чем
out-coalesce.gif
, но я думаю, что это только потому, что черный грунт сжимается очень хорошо, и это может быть очень значительным в целом.ffmpeg и gifsicle
Я также опробовал следующие команды:
и оба произвели еще меньший правильно выглядящий выходной сигнал 1,5 МБ.
Смотрите также: Как мне создать анимированный GIF из неподвижных изображений (желательно с командной строкой)?
ТОДО: почему они могут сделать его меньше, чем
convert
? Они просто выбирают лучшие, более минимальные различные прямоугольники или что-то еще?Протестировано в Ubuntu 18.10, ffpmeg 4.0.2-2, ImageMagick 6.9.10-8.
источник