- Официальная страница: http://www.lcdf.org/gifsicle/
- Версия для Windows: https://eternallybored.org/misc/gifsicle/
- Описание команд: http://www.lcdf.org/gifsicle/man.html
- Github: https://github.com/kohler/gifsicle
gifsicle исходный_файл.gif -o конечный_файл.gif [опции]
Также поддерживается вариант без префиксов для указания исходного и конечного файла:
gifsicle [опции] исходный_файл.gif > конечный_файл.gif
Однако в таком случае порядок следования в команде опций имеет значение, что может приводить к ошибочным результатам, поэтому лучше использовать первый вариант.
Далее в тексте вместо gifsicle -i исходный_файл.gif -o конечный_файл.gif
будет использоваться сокращение {.}
.
{.} -d задержка
, указанная в сотых долях секунды
Также необходимо указать диапазон кадров, начиная с нуля: {.} -d задержка "#0-"
.
Для расчета задержки есть три способа:
-
Сложный математический.
Исходная задержка при частоте, например, 24 кадра в секунду, доставшейся от видео, равна 1/24 = 0.042 с. Если частота кадров уменьшена, например, вдвое (12 кадров в секунду), то задержка умножается на 2 и равна 0.084 с. Это число умножается на желаемое замедление (скажем, 2.5 - 0.21 с), затем это число умножается на 100 (т.к.gifsicle
требует задержку, выраженную именно в сотых долях секунды).
Итоговая формула:
2 * 2.5 * 100/24
, или
разрежение кадров * замедление * 100 / исходная частота кадров
-
Простой житейский.
Есть и более незамысловатый способ: просто посмотреть задержку, которая получилась у промежуточного файла, и увелчить её в нужное число раз.
Текущую задержку можно посмотреть с помощью опции-I
:gifsicle -I промежуточный_файл.gif
Осторожно! Вывод длинный - по две строки на каждый кадр. -
Наглядный - с помощью gifviewer
Крошечная (один файл) безустановочная программа позволяет просмотреть gif-файл с заданной задержкой между кадрами, что позволяет прямо на месте эту задержку подобрать (нажимаем галочку "Use Min ms" в правом нижнем углу программы, если не нажата).
Задержка в gifviewer указывается в миллисекундах, так что при подстановке её вgifsicle
надо не забыть поделить на десять.
{.} "#S-E"
,
где S
и E
- номера начального и конечного кадров.
Нумерация кадров начинается с нуля (в отличие от вышеупомянутого gifviewer, в котором она начинается с единицы).
Можно указывать несколько групп кадров. Если указать одни и те же кадры сначала в прямом, а потом в обратном порядке, получится эффект перемотки назад:
{.} "#S-E" "#E-S"
Более правильным будет устранить дублирование первого и последнего кадров, для чего второй интервал нужно уменьшить на единицу с каждой стороны:
{.} "#S-E" "#(E-1)-(S-1)"
При этом для каждого диапазона можно указать свой интервал между кадрами. Интервал следует перед диапазоном. Пример: установить кадрам с 0-го по 5-й задержку в 200 мс, а последующим - в 1 секунду:
{.} -d 20 "#0-5" -d 100 "#6-10"
Для гарантировано корректной обработки цветов рекомендуется использовать опцию --unoptimize
. Её лучше указывать в самом начале команды (перед -i
), в противном случае она может неправильно сработать.