Windows 7でスクリプト化できるものが必要です。この画像はバナーで使用されます。
ffmpeg でこれを行うことができます
最初に画像をビデオに変換します。
ffmpeg -f image2 -i image%d.jpg video.avi
(これにより、現在のディレクトリ(image1.jpg、image2.jpg ...という名前)の画像がvideo.aviという名前のビデオファイルに変換されます。)
次に、aviをgifに変換します。
ffmpeg -i video.avi -pix_fmt rgb24 -loop_output 0 out.gif
ffmpegのWindowsバイナリはこちら を取得できます。
mplayer でも同様のことができます。 複数の入力画像ファイルからのエンコード を参照してください。
コマンドラインは次のようなものになると思います:
mplayer mf://*.jpg -mf w=800:h=600:type=jpg -vf scale=160:120 -vo gif89a:fps=3:output=out.gif
(800と600はソースの幅と高さ、160と120はターゲットの幅、height.out.gifはターゲットファイル名です)
これらの両方をテストしたところ、どちらも正常に動作します。しかし、解像度とフレームレートを指定することができたので、mplayerからより良い結果を得ました。あなたの走行距離は異なる場合があり、あなたが見た場合、あなたはffmpegのためのより多くのオプションを見つけることができると確信しています。
サイモンPスティーブンスの答え ほとんど私をそこに着いた:
ffmpeg -f image2 -i image%d.jpg video.avi
ffmpeg -i video.avi -pix_fmt rgb24 -loop_output 0 out.gif
これを上手くこなせるかどうか見てみましょう。
Avi経由で行く必要はありません。 -pix_fmt
of rgb24
は無効であり、-loop_output
オプションは、ループを防ぎますが、これは望ましくありません。我々が得る:
ffmpeg -f image2 -i image%d.jpg out.gif
入力画像にはゼロが埋め込まれた3桁の数字のラベルが付いており、そのうち30個(image_001.jpg、image_002.jpg、...)があるため、書式指定子を修正する必要があります
ffmpeg -f image2 -i image_%003d.jpg out.gif
私の入力画像は携帯電話のカメラからのもので、大きすぎます!それらを縮小する必要があります。
ffmpeg -f image2 -i image_%003d.jpg -vf scale=531x299 out.gif
また、時計回りに90度回転する必要があります
ffmpeg -f image2 -i image_%003d.jpg -vf scale=531x299,transpose=1 out.gif
このgifはフレーム間でゼロ遅延で再生されますが、これはおそらく望んでいないことです。入力画像のフレームレートを指定する
ffmpeg -f image2 -framerate 9 -i image_%003d.jpg -vf scale=531x299,transpose=1 out.gif
画像は少し大きすぎるので、空の100ピクセルを切り取ります。転置はこれをトリッキーにします、私は後回転されたxとyの値を使用します:
ffmpeg -f image2 -framerate 9 -i image_%003d.jpg -vf scale=531x299,transpose=1,crop=299,431,0,100 out.gif
最終結果-私は私の仲間の素晴らしい表情を世界と共有することができます:
ImageMagickの場合:
convert *.png a.gif
ffmpegto。aviand.avito。gifは機能しましたが、注意すべきことは、画像に完全な名前を付ける必要があることですギャップなしで機能するように数値の順序を増やします。このffmpegレシピが機能するように、すべての画像の名前を適宜変更するために、簡単なpythonスクリプトを作成しました:
import os
files = [ f for f in os.listdir('.') if os.path.isfile(os.path.join('.',f)) and f.endswith('.jpg') ]
for i, file in enumerate(sorted(files)):
os.rename(file, 'image%03d.jpg' % i)
そして、私は変換を行うためにffmpegよりもはるかに簡単なアプローチにつまずいたが、これは単にImageMagickのコマンドライン変換ツールを使用している
convert image%03d.jpg[0-198] animated_gif.gif
その人たちほど簡単にはなりません。
Simon P Stevensとdwurfの回答に基づいて、私はこの単純化されたソリューションを思い付きました。
ffmpeg -f image2 -framerate 1 -i image%d.jpg video.gif
これにより、画像ごとに1秒のレートが得られます。必要に応じてframerate
値を調整します。
dwurf の答えに追加したいのですが、これは標準の256色パレットでgifを生成しますが、視覚的にはあまり美しくありません。
私は twoblog-posts を見つけ、アニメーションにカスタムパレットを使用して視覚的品質を改善するために、それらを私のニーズに合わせました:
カラーパレットを生成します。
ffmpeg -f image2 -i image%d.jpg -vf scale=900:-1:sws_dither=ed,palettegen palette.png
3番目のコマンドは単一の入力ビデオでのみ機能し、画像の束では機能しないため、画像を目的のフレームレートの通常のビデオに変換します
ffmpeg.exe -f image2 -framerate 1.2 -i image%d.jpg video.flv
生成されたパレットで生成されたビデオを、より美しいgifに変換します。
ffmpeg.exe -i video.flv -i palette.png -filter_complex "fps=1.2,scale=900:-1:flags=lanczos[x];[x][1:v]paletteuse" video.gif