
我有一組大約 500 張 JPEG 影像。該集的總大小約為 60 MB,每個圖像的尺寸為 480 x 270。
我嘗試在具有 16 GB RAM 的 i7 系統上透過以下方式將這些圖像轉換為動畫 GIF:
export MAGICK_THREAD_LIMIT=1
convert -delay 5 -loop 0 -layers optimize -limit memory 64 *.jpg output.gif
然而,當我這樣做時,大量的系統資源被佔用,導致系統變得無法使用並停止運作。
那麼,在 Ubuntu 上製作 GIF 動畫的好方法是什麼?
答案1
以下步驟可防止 ImageMagick 消耗過多的系統資源。它已在 Ubuntu 15.04 上使用 ImageMagick 6.8.9-9 進行了測試。為了說明該過程,我使用將影片轉換為動畫 GIF 的範例。
設定 ImageMagick,使其不會消耗過多的系統資源:
export MAGICK_MEMORY_LIMIT=1024
export MAGICK_MAP_LIMIT=1024
export MAGICK_AREA_LIMIT=4096
export MAGICK_FILES_LIMIT=1024
export MAGICK_THREAD_LIMIT=1
export MAGICK_TMPDIR=/home/user/tmp
環境變數MAGICK_THREAD_LIMIT
限制 ImageMagick 使用的執行緒數(當它在啟用 OpenMP 的情況下建置時)。環境變數MAGICK_TMPDIR
是 ImageMagick 可以儲存臨時檔案的目錄的路徑。它對於相對較大尺寸的幀圖像特別有用,因為它避免了過多的 RAM 記憶體使用。
準備輸入檔案名稱、輸出檔案名稱以及要儲存幀影像的目錄。
filename1=2015-11-09T1300Z.mp4
filename2=2015-11-09T1300Z.gif
directoryName1="tmp_images"
將影片轉換為多個影格影像(適當設定時間限制;在本例中,從 0 秒到 30 秒)。
mplayer -ao null -ss 0:00:00 -endpos 30 "${filename1}" -vo jpeg:outdir="${directoryName1}":quality=100
如果輸出檔案大小限制合理,請減少視訊幀的大小(在本範例中減少 50%)。
mogrify -resize 50% "${directoryName1}"/*.jpg
使用 ImageMagick 將影格影像轉換為動畫 GIF。
convert -delay 5 -loop 0 -layers optimize -limit memory 64 "${directoryName1}"/*.jpg "${filename2}"