Ich denke, ich brauche eine neue, raffiniertere Erklärung (Frame-Verzögerung ist auch eine wichtige Sache, die ebenfalls berücksichtigt werden sollte) ... Für diesen neuen Prozess müssen Sie JREPL.BAT von diesem Link herunterladen:
http://www.dostips.com /forum/viewtopic.php?t=6044
Kopieren Sie zuerst das erfasste GIF in die Datei input.gif, starten Sie dann den Befehlsinterpreter und geben Sie Folgendes ein:
gifsicle input.gif -I "# -1"> input.txt
Schauen Sie in die Datei input.txt und sehen Sie, wie lang die Animation ist - wie viele Frames sie enthält ... Schauen Sie auch in die Verzögerung des Frames und wenn dies 0.07s sind, sollten Sie die Option -d14 (7msec * 2) in diese Zeile setzen in process.cmd: gifsicle -b -U -d14 input.gif, nach der Bearbeitung save process.cmd
Bearbeiten Sie dann test.bat und ändern Sie den Wert der Variablen 166 in dieser Zeile entsprechend der Anzahl der Animationsbilder: Geben Sie für / L %% i IN (1,2,166) nach "# %% i" >> input.bat ein editieren speichern test.bat ...
Starten Sie dann process.cmd und die zugeschnittene Animation mit jedem ungeraden Bild wird in die Datei input.gif verarbeitet
PS Der Vorteil dieser Methode ist auch, dass Sie die volle Kontrolle darüber haben, was Sie aus gif löschen möchten (jedes zweite Bild (1,2,166) oder jedes dritte (1,3,166)), und so weiter, ändern Sie einfach die mittlere Zahl in Batch-Zeile, aber beachten Sie, dass Sie bei Angabe von (1,3,166) -d14 (Verzögerungsoption) von process.cmd entsprechend ändern sollten, um die Änderung (7 ms * 3/2 = 10) widerzuspiegeln, anstatt (7 ms * 2) / 1 = 14), Option für Verzögerung sollte -d10 sein ...
Andere Dateien (zum Beispiel zum Entfernen jedes zweiten Frames): 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"
Und Helfer Readme-Datei 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