Вот 3 команды Imageamagick. Первый твой выше. Во втором я создаю общее изображение карты цветов из двух входных изображений (до и после) и применяю это к каждому кадру. В третьем я делаю ту же обработку цветовой карты, но уменьшаю количество кадров. Я взял все изображения с веб-сайта и ссылки на анимацию и поместил новый логотип в нижнем левом углу, так как в правом нижнем углу уже был один. Обратите внимание, что я добавил -layers оптимизации для всех, что значительно уменьшило размер файла.
логотип
перед:
после
Метод 1 (оригинал):
convert -gravity southwest everlogo.png -write MPR:logo \
\( before.jpg -resize '1280x720!' MPR:logo -geometry +15+15 -composite -write MPR:before \) \
\( after.jpg -resize '1280x720!' MPR:logo -geometry +15+15 -composite -write MPR:after \) \
-delete 0--1 \
MPR:before \( MPR:after -set delay 25 -crop 15x0 -reverse \) \
MPR:after \( MPR:before -set delay 27 -crop 15x0 \) \
-set delay 2 -layers optimize -loop 0 temp1a.gif
2,246,665 bytes
174 frames
Результат слишком велик для загрузки здесь.
Метод2 (общая цветовая карта):
convert -gravity southwest \
everlogo.png -write MPR:logo +delete \
\( before.jpg -resize '1280x720!' MPR:logo -geometry +15+15 -composite -write MPR:before \) \
\( after.jpg -resize '1280x720!' MPR:logo -geometry +15+15 -composite -write MPR:after \) \
-delete 0--1 \
\( MPR:before MPR:after +append +dither -colors 255 -unique-colors -write MPR:colors +delete \) \
MPR:before +dither -remap MPR:colors \( MPR:after +dither -remap MPR:colors -set delay 25 -crop 15x0 -reverse \) \
MPR:after+dither -remap MPR:colors \( MPR:before +dither -remap MPR:colors -set delay 27 -crop 15x0 \) \
-set delay 2 -layers optimize -loop 0 temp1b.gif
2,004,345 bytes
173 frames
Метод 3 (общая цветовая карта; удвоенная ширина кадрирования и четырехкратная задержка; отрегулируйте задержку по своему усмотрению, чтобы она лучше соответствовала Способу 2)
convert -gravity southwest \
everlogo.png -write MPR:logo +delete \
\( before.jpg -resize '1280x720!' MPR:logo -geometry +15+15 -composite -write MPR:before \) \
\( after.jpg -resize '1280x720!' MPR:logo -geometry +15+15 -composite -write MPR:after \) \
-delete 0--1 \
\( MPR:before MPR:after +append +dither -colors 255 -unique-colors -write MPR:colors +delete \) \
MPR:before +dither -remap MPR:colors \( MPR:after +dither -remap MPR:colors -set delay 100 -crop 30x0 -reverse \) \
MPR:after+dither -remap MPR:colors \( MPR:before +dither -remap MPR:colors -set delay 108 -crop 30x0 \) \
-set delay 4 -layers optimize -loop 0 temp1c.gif
1,927,359 bytes
87 frames
Я немного удивлен, что столь значительное уменьшение количества кадров не приводит к соразмерному уменьшению размера файла анимации. Но я подозреваю, что это связано с оптимизацией слоев.
Сложение:
Кроме того, во всем приведенном выше коде я не понимаю, как установить задержку 25 и 27 в скобках, а затем снова установить ее на 2. Я не думаю, что анимационные картинки могут иметь разные задержки. Единственное, что имеет значение, это последний.
Так что с точки зрения задержек и количества кадров, эти два делают то же самое. Первый использует -crop 15x0 и -set delay 4, а второй использует -crop 30x0 и -set delay 8. Это создает анимацию с той же скоростью, но у второго меньше кадров. Первый - 174, второй - 88 и более грубых шагов. Но размеры файлов примерно одинаковы. Таким образом, похоже, что общая цветовая карта вызывает наибольшее уменьшение размера файла.
convert -gravity southwest everlogo.png -write MPR:logo \
\( before.jpg -resize '1280x720!' MPR:logo -geometry +15+15 -composite -write MPR:before \) \
\( after.jpg -resize '1280x720!' MPR:logo -geometry +15+15 -composite -write MPR:after \) \
-delete 0--1 \
MPR:before \( MPR:after -crop 15x0 -reverse \) \
MPR:after \( MPR:before -crop 15x0 \) \
-set delay 4 -layers optimize -loop 0 temp3.gif
frames 174
2,246,665 bytes
convert -gravity southwest everlogo.png -write MPR:logo \
\( before.jpg -resize '1280x720!' MPR:logo -geometry +15+15 -composite -write MPR:before \) \
\( after.jpg -resize '1280x720!' MPR:logo -geometry +15+15 -composite -write MPR:after \) \
-delete 0--1 \
MPR:before \( MPR:after -crop 30x0 -reverse \) \
MPR:after \( MPR:before -crop 30x0 \) \
-set delay 8 -layers optimize -loop 0 temp2.gif
frames 88
2,174,954 bytes