Sign in

Зарегистрируйтесь, чтобы стать полноправным участником сообщества Masterpro.ws.

Gif-анимация - из видео. Для линуксоидов

Нам с вами не раз приходилосмь видеть в вебе смешное и прикольное изображение в формате gif... говоря попросту - гифку... воспроизводящую ту или иную сценку из какого-либо старого и всеми любимого кинофильма. Попробуем сегодня сделать что-либо подобное, ок? Единственное условие - данный урок предназначен только для любителей open source и, в частности, Fedora... да-да, мы будем с вами сегодня работать именно в этом легендарном линуксовом дистрибутиве. Сказано - сделано.

 

Gif-анимация - из видео

Небольшая оговорка; в принципе, путей решения поставленной задачи немало, а схожего результата вполне возможно добиться значительно проще, нежели это описано далее... пожалуй, вам потребовалось бы не более минуты. Устанавливаем mplayer; и далее... как видите, всего две команды:

 

$ sudo yum install mplayer
$ mplayer vash_videofile.avi -vo jpeg
$ convert -delay 1 -loop 0 *.jpg animation.gif

 

Возможно, это вас вполне устроит; но если захочется подойти к выполнению поставленной задачи менее, ммм... механистично, что ли, и более - творчески... впрочем, решайте сами, каким путем идти. Мое дело - попробовать описать сейчас ряд весьма полезных инструметов, которые могут вам пригодиться в дороге. Итак:

Открываем в avidemux-e наш видеофайл и сохраняем несколько фреймов (12 - 20 будет вполне достаточно) подряд из понравившегося эпизода фильма в виде jpg или bmp; в качестве альтернативы здесь можно было бы воспользоваться, конечно, возможностями GAP (Gimp Animation Package)… именно в эту минуту Hubbitus пытается примирить свободный дух Fedora с рядом несвободных зависимостей данного плагина Gimp, линуксоиды меня хорошо поняли и злорадно ухмыльнулись... если, к слову сказать, у него получится - я отпишусь в следующей статье.

 

Примечание. У Hubbitus-a получилось... но не для официального репозитория; учитывая непреклонную лицензионную политику Fedora - вероятно, это вообще невозможно, принимая во внимание ряд зависимостей GAP (в частности - несвободный, что бы там ни говорила википедия, ffmpeg: Fedora won't ship FFMPEG because of patent concerns).
Но вы можете установить для своей Fedora полнофункциональный GAP из репозитория Hubbitus-a.

su -c 'rpm -Uhv http://hubbitus.info/rpm/Fedora20/Hubbitus-release-20-1.noarch.rpm'

 

Что-что? у вас нет авидемукса? ну, установите. Как же это так - у всех он есть, и под виндой, и под BSD, и под маком, и под линуксом... а у вас, видите ли, нету.

Сделали? - замечательно, теперь снабжаем наши изображения водяным знаком, причем делаем это пакетно; нам понадобится для начала подготовить файл watermark.png. После проведенной экзекуции новые файлы скопом сваливаются в директорию water. Итак, устанавливаем ImageMagick (как же без него) и начинаем:

 

$ sudo yum install ImageMagick
$ mkdir water; for f in *.jpg ; do composite -compose bumpmap -gravity southeast watermark.png "$f" "water/${f%.jpg}-w.jpg" ; done

 

Пожалуй, здесь необходимо упомянуть о еще одном плагине для старины Джимпа - Save for web. Качаем по ссылке, распаковываем и устанавливаем (под рутом):

 

yum install gimp-devel intltool gcc gcc-c++
cd /tmp/gimp-save-for-web-0.29.3
./configure
make
make install

 

После чего Gimp приобретает еще одну небесполезную для нас опцию: "Файл -> Сохранить для веба". В зависимости от графических характеристик ваших изображений - данная фича вполне может понадобиться; не забывайте, что gif - формат довольно старенький, родом аж из 1987 года, и с тех пор ни разу не изменял своей уникальной способности хранить сжатые данные без потери качества в формате не более 256 цветов. Разгуляться по полной, таким образом, заведомо не удастся; дай бог, чтобы результат усилий хотя б мало-мальски аккуратно смотрелся на вашей web-страничке.

Плагин 'Save for web'

Теперь мне хотелось бы чуть обрезать графические файлы, которые будут использоваться в качестве слоев нашей gif-анимации; предположим, вот так:

 

convert -crop 642x288+30 *.bmp output.bmp

 

Таким образом мы с вами обрезаем по ширине все наши картинки, каждая из которых первоначально обладает размером 672x288 - ровно на 30 пикселей с левой стороны; если бы нужно было обрезать по высоте - прибавился бы еще один знак + и, соответственно, размер обрезаемой сверху части изображения. Если необходимо кропить (обрезать) изображение с двух сторон... ну, я уверен, вы уже поняли.

Отлично. Теперь открываем наши изображения в Джимпе, берем по одному (копировать) и поочередно "вставляем как слой" в самое первое из них. По окончании (все очень недолго; у вас всего-то полтора-два десятка изображений, не так ли?) можно полюбоваться полученным фильмом (Фильтры -> Анимация -> Воспроизведение), затем, там же, "Оптимизировать (для gif)" и, далее, "Export as -> Cохранить как анимацию (Gif)".

Правда ведь, все несложно?

Оставить комментарий

Добавьте ваш комментарий