Я думаю, що мені потрібне нове більш складне пояснення (затримка кадру - це теж важлива річ, яку також слід врахувати) ... Для цього нового процесу вам потрібно буде завантажити JREPL.BAT за цим посиланням:
http://www.dostips.com /forum/viewtopic.php?t=6044
Спочатку скопіюйте захоплений gif у файл input.gif, потім запустіть перекладач команд та введіть:
gifsicle input.gif -I "# -1"> input.txt
загляньте в input.txt і подивіться, яка тривалість анімації - скільки кадрів у ній міститься ... також погляньте на затримку кадру, і якщо його 0,07s, це означає, що ви повинні ввести в цей рядок опцію -d14 (7msec * 2). в process.cmd: gifsicle -b -U -d14 input.gif, після редагування збережіть process.cmd
потім відредагуйте test.bat і змініть значення змінної 166 з цього рядка на відповідність кількості кадрів анімації: для / L %% i IN (1,216) DO echo "# %% i" >> input.bat, після редагувати зберегти test.bat ...
тоді запустіть process.cmd і обрізану анімацію з кожним непарним кадром буде оброблено у файл input.gif
PS Перевага цього методу полягає також у тому, що ви маєте повний контроль над тим, що ви хочете видалити з gif (кожен другий кадр (1,216) або кожен третій (1,316)), і так далі просто змініть середнє число в пакетний рядок, але майте на увазі, що якщо ви вкажете (1,316), вам слід відповідно змінити -d14 (варіант затримки) з process.cmd, щоб відобразити зміни (7msec * 3/2 = 10), тому замість (7msec * 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"
І файл довідкового файлу read.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