LINUX.ORG.RU

Оптимизация анимированного gif на сервере


1

1

Собираю на сервере анимации движения облаков. Проблема в том, что картини получается здоровая (2 мега). Предварительно скачиваемые картинки оптимизируются командой

convert -adaptive-resize 450 -colors 128 sat.gif sat.gif

Собираю анимацию командой

convert -delay 20 [список картинок] -loop 0 animation.gif
Как уменьшить размер картинки?

Опция -layers Optimize увеличивает размер

★★★

Последнее исправление: kombrig (всего исправлений: 4)

Попробуй конвертировать с параметром -fuzz 2% (с процентами поиграй - до 15 должно быть не заметно на глаз).

Еще можешь начальные изображения сохранять в png, проходить с максимумом через optipng и из них уже собирать.

Но вообще все от конкретных картинок зависит.

aidan ★★★★
()
Ответ на: комментарий от aidan

конвертация в png, его оптимизация. дает выигрыш только на одиночных кадрах.
Исходный gif 80,5Кб,
optipng -o6 *png дает 77,6Кб
optipng -o6 *png && advpng -z -4 *png && advdef -z -4 *png дает 70.0Кб

При сборке анимации, размер получается такой-же как и при сборке из gif

kombrig ★★★
() автор топика
Последнее исправление: kombrig (всего исправлений: 4)
Ответ на: комментарий от aidan

пока нашел лучший вариант, уменьшающий объем итоговой анимации на четверть без заметной потери качества.

gifsicle --optimize -O3 --colors 50 anim.gif > animation.gif

kombrig ★★★
() автор топика
Ответ на: комментарий от kombrig

При сборке анимации, размер получается такой-же как и при сборке из gif

Мб поправили оптимизацию при сборке. Несколько лет назад это действительно работало (у меня, как мимнимум).

http://www.imagemagick.org/discourse-server/viewtopic.php?f=1&t=12874

aidan ★★★★
()
Ответ на: комментарий от kombrig

нашел еще способ уменьшить картинку.

gifsicle --optimize -O3 --use-colormap palette anim.gif > animation.gif

где palette - файл палитры. Подобрать палитру можно с помощью http://www.optiview.com/

Итого: исходный файл 1928826 байт
оптимизированный командой

gifsicle --optimize -O3 --colors 50 anim.gif > animation.gif
- 1327142 байт (69% оригинала)
С оптимизированной 32 цветовой палитрой
gifsicle --optimize -O3 --use-colormap palette anim.gif > animation.gif
- 1259281 байт (65% оригинала)

Для инфракрасной картинки подходит палитра всего в 16 цветов и выигрыш от палитры гораздо более ощутимый.

Исходник 2001563 байт code] gifsicle --optimize -O3 --colors 50 anim.gif > animation.gif - 1423235 байт (71% оригинала)
С оптимизированной 16 цветовой палитрой

gifsicle --optimize -O3 --use-colormap palette anim.gif > animation.gif
- 1096180 байт (55% оригинала)

kombrig ★★★
() автор топика
Последнее исправление: kombrig (всего исправлений: 2)
Ответ на: комментарий от kombrig

Доктор, откуда в у вас такие картинки? Там случайно температурных карт не завалялось рядом?

Что же касается самих картинок, то я предлагаю ударить по ним дизерингом (только не противным Флойдом-Стенбергом, а скажем ордередом или его вариациями), тогда количество цветов можно будет сократить до 3-4, пруфпик: http://upload.wikimedia.org/wikipedia/commons/c/c5/Spatial_color_quantization... - всего 4 цвета. Если выложите оригинальный датасет (непережатые картинки), то могу попробовать подобрать команду.

Палитру можно подбирать и здесь: https://kuler.adobe.com/explore/most-popular/?time=all

pejuto
()
Ответ на: комментарий от kombrig

Окей, попробую поклеить, не гарантирую что будет быстро. А температурные - это больше картинки же. Мало того, что проекцию не угадаешь, отпаммить в координаты практически нереально, так еще и «спектр» состоит из одинаковых цветов, распарсить в температуру нельзя, шумящие надписи на самой карте, да и домика моего там не видно (к вопросу о покрытии). А то я уже который год хочу личный сайт погоды, да данные тырить негде. Точнее есть где, но там хотят много денег.

pejuto
()
Ответ на: комментарий от pejuto

ну прогностику можно тырить с weather underground

Проблема в том, что прогнозы лажают. К примеру, WU утверждает, что d 17:00 на моей метеостанции будет 17С, при влажности 75%, ветер восточный, 6 м/с Сейчас на метеостанции Temperature 13.9°C Humidity 92% c ветром угадали.

kombrig ★★★
() автор топика
Последнее исправление: kombrig (всего исправлений: 1)
Ответ на: комментарий от kombrig

Итак, в 17:00 Temperature 13.9С (прогноз 17С) Humidity 92% (прогноз 75%) Wind 3.6m/s,E (прогноз 6 m/s, E)

Это с учетом того, что прогноз для точки станции

kombrig ★★★
() автор топика
Ответ на: комментарий от kombrig

А ты хотел супер-графен? Я сказал что цветов будет мало. Магия тут и так сильна, без дизеринга ты бы и это не увидел.

pejuto
()
Ответ на: комментарий от pejuto

а дай плиз параметры сборки поиграюсь. Может еще сотню другую килобайт выиграю

kombrig ★★★
() автор топика
Последнее исправление: kombrig (всего исправлений: 1)

Я не следил за веб-технологиями последнее время. Webp ещё не поддерживается широко? Он хорошо сжимает и умеет анимацию. В libwebp даже утилиты для конвертирования gif->webp есть. Хотя бы для интереса можно попробовать, если время/желание есть.

d ★★★★
()
Ответ на: комментарий от pejuto

только не противным Флойдом-Стенбергом

Самый офигенный дизеринг.

devl547 ★★★★★
()
Ответ на: комментарий от Artificial_Thought

думаешь, видео будет меньше мега весить? сейчас у меня ик анимашка весит меньше мега, видимая в зависимости от времени суток от 0,8 до 1,2

kombrig ★★★
() автор топика
Последнее исправление: kombrig (всего исправлений: 1)
Ответ на: комментарий от kombrig

а поподробней?

Отбой. Я сделал несколько анимированных webp из твоей гифки, так они даже в специально установленном хромиуме отказались открываться. Правда, размер мне понравился, особенно в lossy режиме.

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

d ★★★★
()
Ответ на: комментарий от Artificial_Thought

она заоптимизирована. сначала unoptimize надо сделать

kombrig ★★★
() автор топика
Ответ на: комментарий от Artificial_Thought

просто кодирование

ffmpeg -f image2 -r 3 -i sat%02d.gif  -vcodec h264 -r 24 out.mp4
дает результат 885кб (gif 1,2Мб).

Поигрался с качеством - сжал до 694 кб.

ffmpeg -f image2 -r 3 -i sat%02d.gif  -vcodec h264  -crf 25 -qscale 5 -r 24 out.mp4

Но вылезла 1 бяка. 510 атом - кодирует это аж 15 секунд. (против 3 у гифки) попробовал в flv - получилось 615 кб

ffmpeg -f image2 -r 3 -i sat%02d.gif  -qscale 5 -r 24 out.flv
Здесь кодирование заняло 5 сек.

Желающим поиграться мой тестовый набор картинок http://yadi.sk/d/8A18Zffq9ZNxB

kombrig ★★★
() автор топика
Последнее исправление: kombrig (всего исправлений: 2)
Ответ на: комментарий от kombrig

В итоге остановился на варианте c 2-х проходным кодированием в webm. Видео получается размером ~ 200 кб.

ffmpeg -f image2 -r 3 -i sat%02d.gif   -vcodec libvpx  -qmin 10 -qmax 40  -pass 1 -an -y  -r 10 animation.webm
ffmpeg -f image2 -r 3 -i sat%02d.gif   -vcodec libvpx  -qmin 10 -qmax 40  -pass 2 -an -y  -r 10 animation.webm

kombrig ★★★
() автор топика
Последнее исправление: kombrig (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.