Магия против Gifsicle - почему такая разница при объединении GIF?

Я объединяю 3 гифки по 3M в каждый.

До сих пор я использовал магию и конвертирование для выполнения этой работы, но в итоге они потребляли более 6 ГБ ОЗУ и были убиты (...).

convert pic1.gif pic2.gif pic3.gif final.gif

Погуглив вокруг, я нашел gifsicle, который в итоге очень быстро соединил мои три gif и потреблял очень мало оперативной памяти...

gifsicle pic1.gif pic2.gif pic3.gif > final.gif

Как пользователь переднего плана у меня есть только ограниченное понимание этих инструментов, но как производительность может настолько отличаться между конвертированием (магией) и gifsicle?

1 ответ

Решение

Gifsicle делает специальную оптимизацию только для GIF. ImageMagick - это процессор изображений общего назначения, который также не оптимизирует изображения. Его код квантования точный, но медленный. Каждое из ваших изображений должно быть квантовано до 256 цветов или менее. Поскольку ваши изображения представляют собой GIF-изображения, они уже квантованы до 256 цветов или менее. Но каждый может использовать разные наборы цветов. В ImageMagick было бы лучше найти один общий набор цветов и использовать -remap color_map_image для преобразования всех входных изображений в один и тот же набор цветов. Это уменьшит размер файла. Вы можете просто добавить 3 входных изображения и получить уникальные цвета для изображения карты цветов. Вы также можете добавить -layers оптимизации, чтобы потенциально еще больше уменьшить размер файла.

convert pic1.gif pic2.gif pic3.gif \
+append +dither -colors 256 -unique-colors colormap.gif

convert \
\( pic1.gif +dither -remap colormap.gif \)
\( pic2.gif +dither -remap colormap.gif \)
\( pic3.gif +dither -remap colormap.gif \)
-layers optimize \
final.gif


Тем не менее, Gifsicle может быть еще лучше, поскольку это специализированный инструмент только для изображений GIF.

Смотрите также https://imagemagick.org/Usage/formats/

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