Я думаю, что мне нужно новое более сложное объяснение (задержка кадра также важная вещь, которую следует учитывать) ... Для этого нового процесса вам нужно скачать JREPL.BAT по этой ссылке:
http://www.dostips.com /forum/viewtopic.php?t=6044
Сначала скопируйте захваченный gif в файл input.gif, затем запустите интерпретатор команд и введите:
gifsicle input.gif -I "# -1"> input.txt
посмотрите на input.txt и посмотрите, какова длина анимации - сколько кадров она содержит ... также посмотрите на задержку кадра, и если она равна 0.07 с, это означает, что вы должны поместить опцию -d14 (7 мс * 2) в эту строку в process.cmd: gifsicle -b -U -d14 input.gif, после редактирования сохраните process.cmd
затем отредактируйте test.bat и измените значение переменной 166 из этой строки, чтобы оно соответствовало количеству кадров анимации: for / L %% i IN (1,2,166) DO echo "# %% i" >> input.bat, после редактировать сохранить test.bat ...
затем запустите process.cmd и обрезанная анимация с каждым нечетным кадром будет обработана в файле input.gif
PS Преимущество этого метода также в том, что у вас есть полный контроль над тем, что вы хотите удалить из GIF (каждый второй кадр (1,2166) или каждый третий (1,3,166)) и т. Д. Просто измените среднее число в в пакетном режиме, но имейте в виду, что если вы укажете (1,3166), вам следует соответственно изменить -d14 (опция задержки) из process.cmd, чтобы отразить изменение (7 мсек * 3/2 = 10), поэтому вместо (7 мсек * 2) / 1 = 14), опция для задержки должна быть -d10 ...
Другие файлы (например, удаление каждого второго кадра): test.bat:
@echo off
echo gifsicle -b input.gif --delete>> input.bat
for /L %%i IN (1,2,166) DO echo "#%%i">> input.bat
echo --done>> input.bat
call jrepl.bat "\n" "" /x /m /f input.bat /o -
process.cmd:
gifsicle -b -U -d14 input.gif
call "test.bat"
call "input.bat"
gifsicle -b -O3 input.gif
erase "input.bat"
И вспомогательный readme файл input.txt:
* input.gif 166 images
logical screen 1366x768
global color table [256]
background 15
loop forever
+ image #165 1x1 at 1365,767 transparent 15
disposal asis delay 0.07s
let i=0; while [[ $i -lt $(($numframes / 2)) ]]; do gifsicle $2 --delete "#$i" -o $2; let i=i+1; done