Make
an animated GIF from the command line (1)
【前言】
有很多免費的應用程式可以用來製作
GIF
動圖,不少是圖形界面的軟體,很方便。但若想只用指令,要如何做呢?
圖片的處理是用
ImageMagick
7,但圖片的來源通常是影片,所以會用
FFmpeg
從影片中抽出圖片。
作業系統先用
Windows。
因指令很多,不可能臨時在命令視窗/虛擬終端機輸入,所以常用
.bat
檔。但要注意的是,二者稍有不同;例如:%
符號,在終端機只用一個
%,而在
.bat
檔中,要用
%%。本系列範例皆是虛擬終端機的用法。
本文只敘述較單純的例子:先用
ImageMagick
製造
0
到
9
的數字圖,再轉為動圖。
【步驟】
0.
工作資料夾。
新增一個專用的資料夾。
在此夾中新增
.bat
檔。若有用到影片,也移至此。
在此夾中新增圖片資料夾,如:images。
1.
製作數字圖。
以下指令可在
images
子資料夾中建立一個數字
1
的方圖:
magick
convert -size 100x100 -font Tahoma -gravity Center label:1
images\number-1.png
-size
寬x高:
設定圖片尺寸。
-font:
設定字型。
列出電腦中可用字型:magick
convert -list font
-gravity:
設定位置。
列出可用位置:magick
convert -list gravity
label::
文字內容。
最後為輸出檔名,由副檔名指定格式。
若要建立
0
到
9
的數字,不須
9
個指令,只要用
for
指令即可:
for
/L %a in (0,1,9) do (
magick
convert -size 100x100 -font Tahoma -gravity Center label:%a
images\number-%a.png
)
註:batch
指令不在本文討論範圍。
2.
製作動圖。
magick
convert -delay 100 images\*.png numbers.gif
-delay:
間隔,單位是百分之一秒。
完整設定是:個數x每秒個數;每秒個數的預設值是
100;雖然用
x,但意義相當於
/。
所以
-delay
100 就等於
-delay
100x100,相當於
100/100,即間隔為
1
秒。
所以
-delay
100x100 等於
-delay
50x50 等於
-delay
1x1。
註一:此指令的順序很重要,先設定間隔,次給來源圖,最後為輸出檔名。若來源圖先,則間隔的設定無效,結果間隔就用預設值
0。
註二:-delay
是對其後所有的圖都有效,若其後是動圖,則每一畫格皆有效。
註三:圖片在資料夾中的順序就是組成動圖的順序。所以圖片檔名要考慮清楚。
【後語】
1.
之所以稱
Animated
GIF 為動圖而非動畫是因為動畫通常指像卡通之類的影片;很明顯
Animated
GIF 不是卡通,為了區別,故稱之為動圖。
2.
動圖的顯示速度和顯示引擎有關,不同的瀏覽器、不同的看圖程式,速度就可能不同。
3.
本文介紹的方法很簡單吧!下一篇敘述自影片中抽出圖片,再製作成動圖。
【附錄】批次檔的完整內容
for
/L %%a in (0,1,9) do (
magick
convert -size 100x100 -font Tahoma -gravity Center label:%%a
images\number-%%a.png
)
magick
convert -delay 100 images\*.png numbers.gif
沒有留言:
張貼留言