画像セットを使用して Ubuntu でアニメーション GIF を作成するにはどうすればよいですか?

画像セットを使用して Ubuntu でアニメーション GIF を作成するにはどうすればよいですか?

約 500 枚の JPEG 画像のセットがあります。セット全体のサイズは約 60 MB で、各画像のサイズは 480 x 270 です。これらの画像をアニメーション GIF に変換したいと考えています。

私は、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_LIMITImageMagick が使用するスレッドの数を制限します (OpenMP を有効にしてビルドされている場合)。環境変数は、MAGICK_TMPDIRImageMagick が一時ファイルを保存できるディレクトリへのパスです。これは、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}"

関連情報