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


83

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

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

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

[ニュース] Ubuntu StackexchangeとUnix Stackexchangeには大きな重複があります。ここでいくつかのスレッドを分類しようとしました
hhh

3.に関してconvertは、ファイルを並べ替えた後でも引き続き使用できます。おそらく、このようなものが動作するfiles=$(ls name*png | sort -n -tname -k1); convert $files animation.gif
-altroware

ポイント1の場合:変換には-monitorプロセスを追跡するパラメーターがあります
Curlew

回答:


50

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

10
この命令は古くなっています。
highmaintenance

3
このsameqオプションは使用できなくなりました。さらに、私にとって、これは元の画像ファイルを上書きし、有効なムービーファイルを生成しません。
ロード14年

-sameqコードをそこに残す意味は何ですか?なぜ損失の多いビデオ形式(output.mp4)を一時的に使用したいのでしょうか?もしそうなら、なぜ非常に高いビットレートではなく、入力として「同じ品質」ですか?それによるアーティファクトは、GIFエンコーダーの状況を悪化させるだけです。ビデオを一時的なものとして使用する必要がある場合は、huffyuvのようなロスレスなものを使用する必要があります。または、トランスコーディングのないMJPEGで、入力JPEGをMJPEGに再多重化します。(-codec:video copy)。
ピーターコーデス

80

convertそれを行う便利なコマンドラインツールです。 pngファイルcdを含むフォルダーに移動し、次のコマンドを実行します。

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

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


5
質問はconvertそれを使用していくつかの問題に言及しています。あなたの答えはそれらのいずれにも対処していません。
マット

3
ImageMagickバージョンの時点で、6.8.7-4 2013-11-02 Q16これはうまくいきました。
ルディマテラ

7
これは機能し10ますが、10 * 10msを意味するため、非常に高速です。aの遅延100は1秒です。
アンヴァンロッサム

7
オプションを使用する-dispose previousか、-dispose 2あなたは透明のPNGファイルで作業している場合
ハイフォンを

4
自分自身に注意してください:ブレース展開は、引数としてイメージのリストを指定するための参考にすることができ、例えばpic_{0..20..2}.pngに展開pic_0.pngpic_2.pngすべての方法pic_20.png
Yiboヤン

19

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

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

ソートのニーズに合わせて、convertはフレームをソートせず、shell globing *はソートします。フレームに0から700までの番号が付けられていることがわかっている場合は、自分で番号を計算できます。

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

5
私はconvert、この動作をで経験してconvert -delay 1000 -loop 0 *.png animation.gifいません。なぜなら、私は画像の間に10秒の遅延を追加するからです。
ロード14年

1
コマンドのバージョンソートを使用することもできlsます。それは:convert -delay 1000 $(ls -v name*png) output.gif
エリック

7

更新:

使用convert使用し、その後、PNG・ツー・GIFのためgifsicleをアニメーション。それはすべて1つのアプリで実行できるソリューションではありませんが、確かにスクリプト可能です。


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


3
Gimpについては知っていますが、スクリプトを作成する方法がわかりません。また、gimpを使用してアニメーションを作成することは、大砲でハエを殺すようなものです
Yotam

1
それは悪い考えです。各フレームは個別に量子化されるため、品質はひどくなります。
クレメント

2

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


6
Unix&Linuxへようこそ!一般に、サイト上の回答は自分で立つことができるようにしています-リンクは素晴らしいですが、そのリンクが壊れた場合でも、回答はまだ役立つように十分な情報を持っている必要があります。回答を編集して詳細を含めることを検討してください。詳細については、FAQを参照してください
slm

上記のなんと便利なコメント
ルーク

convert -delay 200 -loop 0 *.jpg output.gif
ルーク

2

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でテスト済み。


-1

ポイント2に関して

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.