Saya pikir saya perlu penjelasan baru yang lebih canggih (frame delay juga hal penting yang harus dipertimbangkan juga) ... Untuk proses baru ini Anda perlu mengunduh JREPL.BAT dari tautan ini:
http://www.dostips.com /forum/viewtopic.php?t=6044
Pertama-tama salin gif yang ditangkap ke dalam file input.gif kemudian mulai juru bahasa perintah dan ketik:
gifsicle input.gif -I "# -1"> input.txt
lihat input.txt dan lihat berapa panjang animasi - berapa banyak frame yang dikandungnya ... lihat juga penundaan frame dan apakah 0,07 itu berarti Anda harus meletakkan opsi -d14 (7msec * 2) ke dalam baris ini di process.cmd: gifsicle -b -U -d14 input.gif, setelah mengedit save process.cmd
kemudian edit test.bat dan ubah nilai variabel 166 dari baris ini agar sesuai dengan jumlah frame animasi: untuk / L %% i IN (1,2,166) DO echo "# %% i" >> input.bat, setelah edit save test.bat ...
kemudian mulai process.cmd dan potong animasi dengan setiap frame aneh akan diproses menjadi file input.gif
NB Keuntungan dari metode ini adalah juga bahwa Anda memiliki kontrol penuh atas apa yang ingin Anda hapus dari gif (setiap frame kedua (1,2,166), atau setiap ketiga (1,3,166)), dan sebagainya, cukup ubah nomor tengah di garis bets, tetapi perlu diketahui bahwa jika Anda menentukan (1,3,166), Anda harus mengubah -d14 (opsi penundaan) dari process.cmd untuk mencerminkan perubahan (7msec * 3/2 = 10), jadi alih-alih (7 msec * 2 / 1 = 14), opsi untuk penundaan harus -d10 ...
File lain (misalnya menghapus setiap frame kedua): 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"
Dan file readme pembantu saya 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