web-dev-qa-db-ja.com

PNGファイルからGIFアニメーションを作成する

gifファイルのセットからpngアニメーションを作成するツールはありますか?

ImageMagick スイートからconvertコマンドを試しましたが、これが常に成功するとは限りません。また、これにはいくつかの問題があります:

  1. 進捗状況はわかりません。
  2. 何を試しても、-delayフラグはgifアニメーションのフレームレートを変更しません。
  3. convertは、ファイル名のアルファベット順に基づいてフレームの順序を決定します。これは、name500.pngname50.pngの直後ではなくname450.pngの直後に配置されることを意味します。0を追加することでこれを修正できますが、これは面倒です。
89
Yotam

新しいバージョンのffmpegには-sameq( faqを参照 )はありませんが、GIFはサポートされています。

ffmpeg -i %03d.png output.gif

%03dは3桁のフレームIDです。

また、ffmpegを使用して一連の画像からムービーを作成し、そのムービーをGIFアニメーションに変換することもできます(ここでもffmpegを使用します)。

# cf. http://pages.uoregon.edu/noeckel/MakeMovie.html

# first convert an image sequence to a movie
ffmpeg -sameq -i %03d.jpg output.mp4

# ... and then convert the movie to a GIF animation
ffmpeg -i output.mp4 -pix_fmt rgb24 -s qcif -loop_output 0 output.gif
54
nano

convertは、そのための便利なコマンドラインツールです。 cdpng-ファイルを含むフォルダーに追加し、次のコマンドを実行します。

convert -delay 10 -loop 0 *.png animation.gif

ソース: http://ubuntuforums.org/showthread.php?t=1132058

91
RobinJ

convert--delayオプションは、コマンドラインの次のイメージにのみ適用されます。そう convert -delay 10 *は、最初のフレームの遅延のみを0.1秒に設定します。オプションを繰り返す必要があります:

convert $(for a in *; do printf -- "-delay 10 %s " $a; done; ) result.gif

あなたの並べ替えの必要性のために、変換はフレームを並べ替えません、シェルグロビング*します。フレームの番号が0〜700であることがわかっている場合は、自分で番号を計算できます。

convert $(for ((a=0; a<700; a++)); do printf -- "-delay 10 name%s.png " $a; done;) result.gif
20
BatchyX

更新:

Png-to-gifにはconvertを使用し、次にアニメーションには gifsicle を使用します。これは、1つのアプリですべてを解決できるわけではありませんが、確かにスクリプト化可能です。


[〜#〜] gimp [〜#〜] できます アニメーションGIFを作成する そして、タイミング/遅延および繰り返しなどの制御を提供します

7
gregnotcraig

ffmeg重要なGIFオプション+テストデータ

補足するには この答え

wget -O opengl-rotating-triangle.Zip https://github.com/cirosantilli/media/blob/master/opengl-rotating-triangle.zip?raw=true
unzip opengl-rotating-triangle.Zip
cd opengl-rotating-triangle
ffmpeg \
  -framerate 60 \
  -pattern_type glob \
  -i 'tmp.*.png' \
  -r 15 \
  -vf scale=512:-1 \
  out.gif \
;

テストデータは次のように生成されました https://stackoverflow.com/questions/3191978/how-to-use-glut-opengl-to-render-to-a-file/14324292#14324292

私が強調したかった重要なffmpegオプションは次のとおりです。

  • -patter_type glob:画像を選択する便利な方法
  • -framerate 60および-r 15:入力画像が60 FPSであると想定します(ffmpegは、ビデオ形式のように画像にFPSデータがないため、他の方法では知ることができません)、4つの画像ごとに1つ選択してサイズを小さくします(4 == 60 / 15
  • -vf scale=512:-1:通常、サイズを縮小してスペースを節約するために、幅とスケールの高さを比例的に設定します

以下も参照してください。

Ubuntu 18.10、ffmpeg 4.0.2でテスト済み。

ImageMagickは、高品質のgifアニメーションを生成できます。このビデオを確認してください- http://www.youtube.com/watch?v=OFusYizJ-bA

2
xyz

ポイント2に関して

私が持っているImageMagick "display"のバージョン(ImageMagick 6.7.2-7 2017-01-12)は、convertコマンドを使用して設定されたフレームレートを無視して、アニメーションgifを生成します。別のプログラムを試して、FirefoxのようなアニメーションGIFを表示します。

0
user8388891