Уменьшение gif изображений (высоты и ширины в два раза) приводит к увеличению веса файла на 10%

Пробую под unix при помощи imagemagick уменьшать размеры gif изображений, к примеру с 400x400 до 150x150 в большинстве случаев вес файла увеличивается после конвертации на 10%. Пробую такую команду, с добавлением различных фильтров оптимизации, но все равно не помогает:

convert n9H6d1304MgaeL2.gif -coalesce -thumbnail 190x190 -layers Optimize test190.gif
gifsicle -O2 test190.gif > test190.gif

Может кто подскажет в чем может быть проблема и/или open source библиотеки, которые умеют качественно уменьшать и затем оптимизировать gif?
  • Вопрос задан
  • 5046 просмотров
Пригласить эксперта
Ответы на вопрос 6
ZimM
@ZimM
Подозреваю, всё дело в том, что исходная картинка обладает небольшим количеством цветов, а после ресайза палитра сразу разрастается и соответственно, увеличивается и размер файла
Ответ написан
Комментировать
demimurych
@demimurych
ImageMagick очень сложный инструмент, которым нужно уметь пользоваться.
Ваш исходный gif имеет 153 цвета на каждый кадр.
При простом использовании convert без задания палитры вы получаете 256 цветов на кадр. Этим объясняется увеличение размера файла,

К сожалению, я не настолько хорошо владею ImgeMagick чтобы научить его делать автоматически оптимальный вариант для вашей задачи.

Потому рекомендую использовать вам gifsicle для этих целей
gifsicle -O4 --resize 190x190 ./test.gif -o ./test2.gif
Ответ написан
Комментировать
vsespb
@vsespb
Используйте опцию ' +profile "*" '
convert +profile "*"…

Это избавит от большого куска метаданных, записываемых в файл.
Ответ написан
demimurych
@demimurych
gifsicle -O2 --resize 190x190 ./test.gif -o ./test2.gif
Ответ написан
Комментировать
demimurych
@demimurych
В догонку, у gifsicle есть параметр --colors в котором вы можете в ручную подобрать колличество цветов которые вас устроят
например с вашим файлом
gifsicle -O4 --resize 190x190 --colors 100 ./test.gif -o ./test2.gif
дает результат 1.5Мб при внешне вроде бы схожем качестве.
Ответ написан
Комментировать
alpust
@alpust Автор вопроса
Вообщем да, проблема была в палитре, гифсайкл даже не нужен, в конверте тоже можно палитру задать, рабочий вариант:
convert 81204073_0_b4769_4532d6eb_XL.gif -coalesce -thumbnail 190x190 -layers Optimize -colors 100 test190.gif
с 1.9 уменьшает до 1.5. Всем спасибо.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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