ฉันคิดว่าฉันต้องการคำอธิบายที่ซับซ้อนมากขึ้นใหม่ (ความล่าช้าของเฟรมก็เป็นสิ่งสำคัญที่ควรพิจารณาด้วย) ... สำหรับกระบวนการใหม่นี้คุณจะต้องดาวน์โหลด 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,2,166) DO echo "# %% i" >> input.bat หลังจาก แก้ไขบันทึก test.bat ...
จากนั้นเริ่มต้น process.cmd และภาพเคลื่อนไหวที่ครอบตัดด้วยเฟรมคี่ทั้งหมดจะถูกประมวลผลเป็นไฟล์ input.gif
PS ข้อดีของวิธีนี้คือคุณสามารถควบคุมสิ่งที่คุณต้องการลบจาก gif (ทุกเฟรมที่สอง (1,2,166) หรือทุก ๆ สาม (1,3,166)) และเปลี่ยนหมายเลขกลางใน บรรทัดแบทช์ แต่โปรดทราบว่าถ้าคุณระบุ (1,3,166) คุณควรเปลี่ยน -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 -
กระบวนการ 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