Daha sofistike bir açıklamaya ihtiyacım olduğunu düşünüyorum (kare gecikmesi de dikkate alınması gereken önemli bir şey) ... Bu yeni işlem için bu bağlantıdan JREPL.BAT dosyasını indirmeniz gerekecek:
http://www.dostips.com /forum/viewtopic.php?t=6044
Öncelikle yakalanan gif'i input.gif dosyasına kopyalayın, sonra komut yorumlayıcısını başlatın ve şunu yazın:
gifsicle input.gif -I "# -1"> input.txt
input.txt dosyasına bakın ve animasyonun uzunluğunun ne olduğunu görün - kaç tane kareler içeriyorsa ... karenin gecikmesine de bakın ve eğer 0.07s ise -d14 (7msec * 2) seçeneğini bu satıra koymanız gerektiği anlamına gelir. process.cmd içinde: gifsicle -b -U -d14 input.gif, edit save işleminden sonra.
daha sonra test.bat dosyasını düzenleyin ve 166 değişkeninin değerini bu satırdaki animasyon karelerinin sayısına göre değiştirin: for / L %% i IN (1,2,166) DO echo "# %% i" >> input.bat düzenle save test.bat ...
daha sonra process.cmd'yi başlatın ve her bir tek kareyle birlikte kırpılmış animasyon input.gif dosyasına işlenir.
PS Bu yöntemin avantajı ayrıca, gif'ten ne silmek istediğinizi (her ikinci karede (1,2,166) veya her üçte bir (1,3,166)) tam olarak kontrol edebilmenizdir; toplu iş hattı, ancak (1,3,166) belirtirseniz, buna göre (7msec * 2 yerine -d14 (gecikme seçeneği) 'yi process.cmd öğesinden değiştirmelisiniz (7msn * 3/2 = 10). / 1 = 14), gecikme seçeneği -d10 ... olmalıdır
Diğer dosyalar (örneğin, her ikinci kareyi kaldırma): 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 -
süreç.cmd:
gifsicle -b -U -d14 input.gif
call "test.bat"
call "input.bat"
gifsicle -b -O3 input.gif
erase "input.bat"
Ve yardımcı benioku dosyası 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