2014-06-09 46 views
0

我正在使用ImageMagick將png文件的序列轉換爲動畫gif。基本上,該命令是ImageMagick - 最大數量的幀?

convert -delay 5 img/gif_part_*.png animation.gif 

的文件去從gif_part_1.pnggif_part_27.png,但GIF在gif_part_10.png(也許9)開始,進入到最後。你可以在這裏看到它。 Stack不允許我上傳gif文件,所以稍後我會對其進行編輯。

那麼,我可以製作一個gif(現在看起來最大約爲18)的文件數量有限制嗎?我正在研究烏龜圖形,並且我想通過遞歸函數來顯示圖形創建過程。 png文件的數量可能會達到數百個或更多。

我也嘗試使用ffmpeg,但無法使其工作。

更新

我試圖做一個gif出的兩個較小gif s,而它所做的工作。但我認爲這是可怕的方式 - 這將是一件非常重要的工作,把它放在一起。

我認爲問題可能出在命名文件上。我在某處讀過,可能需要添加零,因爲gif_part_10.png可能在gif_part_1.png之前。

+1

你是正確的,當我有一個類似的項目這我從frame_000編號了我的幀。PNG到'frame_108.png',並從那裏完美運行。 –

+0

@NiettheDarkAbsol是的,它現在正在工作!很好,但現在我不確定我是否應該刪除它,或者編輯Q或回答它。:) – quapka

+0

看起來您在發佈後大約半小時後回來編輯。在這樣的情況下,如果你回答了你自己的問題,我覺得它會好起來的:) –

回答

2

基本上解決方案是在我更新的問題。但爲了更好的可讀性,我會添加一個答案。問題在於命名個人png文件。當ImageMagick命令convert創建一個gif文件時,它需要以某種方式對png文件進行排序。該錯誤命名將

img1.png 
img2.png 
. 
img10.png 
. 
. 
img90.png 

因爲convert會在這種情況下,把img10.pngimg1.png之前,這肯定破壞了輸出。該正確的方法是這樣的:

img01.png 
img02.png 
img03.png 
img04.png 
img05.png 
img06.png 
img07.png 
img08.png 
img09.png 
img10.png 
. 
. 
. 
img90.png 

現在convert會以正確的順序對文件進行排序


因爲我一直在創造我自己的 png文件,我可以很容易地糾正腳本,這要歸功於 this整齊的方法。我假定你知道,你要多少圖片轉換成 gif,讓我們把它變成變量`NUM_IMAGES',那麼你可以這樣做:

path = 'img_'+ str(index + 1).zfill(len(str(num_images))) 
path += '.png' 

這將增加前導零的必要量。例如。你有236圖像進行轉換(在我們的例子中是num_images = 236)。另一個巧妙的技巧是len(str(num_images))。首先,它從236創建一個字符串 - >'236',然後找到的len('236') = 3

長度這是最後的文件將如何看起來像zfill

img_001.png 
img_002.png 
. 
. 
. 
img_010.png 
img_011.png 
. 
. 
img_100.png 
. 
. 
. 
img_236.png