如何在 Ubuntu 中使用一組映像建立動畫 GIF?

如何在 Ubuntu 中使用一組映像建立動畫 GIF?

我有一組大約 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}"

相關內容