Уменьшить анимационный gif

cyborg

Новичок
Уменьшить анимационный gif

После уменьшения анимационного гифа с помощью утилиты convert из комплекта imagemagick гиф становится с нужным размером, анимационный, но показывается какая-то ерунда. Уменьшаю до ширины 40 пикселов так:
PHP:
$imgconvert = "/usr/bin/convert " . $filein . " -colors 64 -resize 40 " . $fileout;
exec ($imgconvert, $output);
Может кто-то сталкивался с такой проблемой?

-~{}~ 09.07.06 10:38:

Неужели все пользуют GD? GD вообще при уменьшении портит цвета у CMYK изображений, анимационный гиф уменьшить не может.
 

ThomLee

Новичок
у тебя тут синтаксис mogrify, а не convert, для convert еще раз повтори $fileout или поменяй на mogrify
 

cyborg

Новичок
Автор оригинала: ThomLee
у тебя тут синтаксис mogrify, а не convert, для convert еще раз повтори $fileout или поменяй на mogrify
mogrify просто переписывает уменьшенную картинку (thumbnail) поверх уменьшаемой картинки - вот все отличие. получается там же ерунда. Чтоб показать какая проблема, вот исходый гиф:



А вот что получается после /usr/bin/mogrify -resize 50% /var/www/test.gif



-~{}~ 09.07.06 12:15:

Если использовать совместно с -resize опцию -coalesce, то получается немного лучше, но все равно очень проблемно.


А вот это если использовать -sample вместо -resize
 

ThomLee

Новичок
А, понятно.
А вручную нормально получается ресайзить?
У меня не получается. Такая же фигня выползает.

-~{}~ 09.07.06 12:28:

разбирать на составные gif, ресайзить отдельно каждый фрейм, а потом собирать заново не пробовал?

-~{}~ 09.07.06 12:30:

в указанном рисунке фремы разных размеров, кстати, они смещаются
 

cyborg

Новичок
ThomLee, вручную точно так же, если использовать Imagemagick

Фреймы разные, это сделано для оптимизации - из-за этого скорее всего и происходит такая ерунда. При использовании -sample почти нормально - но там тупой алгоритм - удаляет просто часть строк и в результате у оптимизированных опять выходит ерунда.

Разбирать на фреймы пока не пробовал - скорее всего придется именно так, просто думал может кто знает способ попроще - вот и спросил тут
 
Сверху