Ben aynı uzunlukta 2 hareketli GIF yok, bu yüzden sadece bu iki kopyasını kullanacağız
identify 1.gif
1.gif[0] GIF 500x339 500x339+0+0 8-bit sRGB 32c 508KB 0.000u 0:00.000
1.gif[1] GIF 449x339 500x339+51+0 8-bit sRGB 32c 508KB 0.000u 0:00.000
1.gif[2] GIF 449x339 500x339+51+0 8-bit sRGB 32c 508KB 0.000u 0:00.000
1.gif[3] GIF 449x339 500x339+51+0 8-bit sRGB 32c 508KB 0.000u 0:00.000
1.gif[4] GIF 448x339 500x339+52+0 8-bit sRGB 32c 508KB 0.000u 0:00.000
1.gif[5] GIF 449x339 500x339+51+0 8-bit sRGB 32c 508KB 0.000u 0:00.000
1.gif[6] GIF 448x339 500x339+52+0 8-bit sRGB 32c 508KB 0.000u 0:00.000
1.gif[7] GIF 448x339 500x339+52+0 8-bit sRGB 32c 508KB 0.000u 0:00.000
1.gif[8] GIF 448x339 500x339+52+0 8-bit sRGB 32c 508KB 0.000u 0:00.000
1.gif[9] GIF 448x339 500x339+52+0 8-bit sRGB 32c 508KB 0.000u 0:00.000
1.gif[10] GIF 448x339 500x339+52+0 8-bit sRGB 32c 508KB 0.000u 0:00.000
1.gif[11] GIF 500x339 500x339+0+0 8-bit sRGB 32c 508KB 0.000u 0:00.000
1.gif[12] GIF 500x339 500x339+0+0 8-bit sRGB 32c 508KB 0.000u 0:00.000
1.gif[13] GIF 500x339 500x339+0+0 8-bit sRGB 32c 508KB 0.000u 0:00.000
1.gif[14] GIF 500x339 500x339+0+0 8-bit sRGB 32c 508KB 0.000u 0:00.000
1.gif[15] GIF 448x339 500x339+52+0 8-bit sRGB 32c 508KB 0.000u 0:00.000
1.gif[16] GIF 500x339 500x339+0+0 8-bit sRGB 32c 508KB 0.000u 0:00.000
1.gif[17] GIF 500x339 500x339+0+0 8-bit sRGB 32c 508KB 0.000u 0:00.000
AAAA, farklı boyutlarda 18 kare, biz tam olanları içine kısmi çerçeveleri yeniden -coalesce
kullanmak gerektiği anlamına gelir. Şimdi
convert 1.gif -coalesce a-%04d.gif # split frames of 1.gif into a-0001.gif, a-0002.gif etc
convert 2.gif -coalesce b-%04d.gif # split frames of 2.gif into b-0001.gif, b-0002.gif etc
bireysel çatıların yan-yana katılmasına izin:
Now 2.gif
cp 1.gif 2.gif
böyle, onların bileşeni çerçeveler halinde iki gif bölebilmeniz kopyalayıp yapalım :
for f in a-*.gif; do convert $f ${f/a/b} +append $f; done
Not ${f/a/b}
bir deneme-izm meanin olduğu g "f değerini alın ve" a "harfini" b "" ile değiştirin.
Ve tekrar bir araya koymak:
Ben hepsini anlatmaya çalıştım çünkü, ama gerçekten böyle görünüyor daha sert daha uzun görünüyor ve
convert -loop 0 -delay 20 a-*.gif result.gif
:
convert 1.gif -coalesce a-%04d.gif # separate frames of 1.gif
convert 2.gif -coalesce b-%04d.gif # separate frames of 2.gif
for f in a-*.gif; do convert $f ${f/a/b} +append $f; done # append frames side-by-side
convert -loop 0 -delay 20 a-*.gif result.gif # rejoin frames
Bu kavramsal kodun, üretim kalitesi olmadığını unutmayın. Oluşturduğu geçici dosyaları kaldırmaz ve eş çerçeve zamanını orijinal GIF'lerden ileriye taşımaz.Orijinal kare hızı elde etmek istiyorsanız bu gibi onları almak ve bir diziye onları kurtarmak ve sonunda yeniden canlandırma komutu geri gecikmeler yem olabilir: Ayrıca
identify -format "%f[%s] %T\n" 1.gif
1.gif[0] 8
1.gif[1] 8
1.gif[2] 8
1.gif[3] 8
1.gif[4] 8
1.gif[5] 8
1.gif[6] 8
1.gif[7] 8
1.gif[8] 8
1.gif[9] 8
1.gif[10] 11
1.gif[11] 11
1.gif[12] 11
1.gif[13] 11
1.gif[14] 11
1.gif[15] 11
1.gif[16] 11
1.gif[17] 26
, bir ara parça isteyebilir iki animasyonlar arasında, bu biriyle for
döngü içinde convert
komutu değiştirerek yapabilirsiniz, hangi 10 piksel ki:
convert $f -size 10x xc:none ${f/a/b} +append $f
Ben ImageMagic (sürüm 7.0.2) ve tüm kullanıyorum
komutlar, "fo" dışında rf içinde - *. gif; $ f $ {f/a/b} + dönüştürmek yapmak $ f; FOR döngüsündeki belgelere göre şunu değiştirdim: '% F için (a - *. gif); % F% {f/a/b} + ekleme% f; bitti, ama hala sorun yaşıyorum. Baska öneri? Kullandığım FOR döngülerinin dokümantasyonu burada (http://www.imagemagick.org/Usage/windows/#for_loops) ve kullanıyorum ekleme komutu şu şekildedir: (http://www.imagemagick.org/ söylem-sunucu/viewtopic.php? t = 11320) – AaronJPung
"$ {f/a/b}", "f' al "anlamına gelir ve" a "nın içindeki tüm" a "ifadelerini" b "ile değiştirir. bash'a (Linux'ta). Bunu yapmak için Windows-y yolunu bulmanız gerekecek. –
Bunu onayladığınız için teşekkür ederiz. Evet, dahil ettiğim linklerin sözdizimi farkını farkettim. Windows'ta, $ ->% düşünüyorum. Buna devam edeceğim. – AaronJPung