2つの画像を並べた画像をFFmpegで作る

高さそろえてhstack / 2022-09-10T00:00:00.000Z

先日山体崩壊について扱った記事を公開したのですが、そこでセントヘレンズ山のビフォーアフター画像を作成して掲載しました。単純に2つの画像を横並びにして1枚の画像を作っただけなのですが、FFmpegで簡単に作ることが出来たので取り敢えず記事にしておきます。

結論

  1. -vf scaleで高さを揃える
  2. hstackでくっつける

作る

やることはほとんど結論に書いてしまったので、もはや単純作業に近しいのですが一応手順を書いておきます。

初めに当たり前と言えば当たり前なのですが、くっつけたい画像を2つ用意します。以下の記載ではそれぞれの画像をa.jpgb.jpgとします。もちろんですがFFmpegが読み込める画像形式であるのならばJPEG画像に限らず画像を合成することが出来ます。

コマンドプロンプトを開き、以下のようなコマンドを入力します。

ffmpeg -i a.jpg -vf scale=-1:1080 a_out.jpg
ffmpeg -i b.jpg -vf scale=-1:1080 b_out.jpg

簡単なコマンドなのでそこまで説明することは無いのですが、-vf scale=-1:10801080は作りたい画像の高さにしてください。このようにして高さを揃えた、ら横に並べて合成します。

ffmpeg -i a_out.jpg -i b_out.jpg -filter_complex hstack output.jpg

そうするとこんな感じの画像が出来ます。冒頭でも触れた通りセントヘレンズ山の噴火のビフォーアフターを1枚の画像にすることが出来ました。

セントヘレンズ山のビフォーアフター

ちなみにhstackhはhorizontalのhかな~と思ったので、verticalのvstackにしたら縦に積めるかなと思ったら積めました。縦に積みたい方は参考にしてください。

最後に

ImageMagick、一時期めちゃくちゃな量のバグ修正時期があったので新規で入れたくなかったんですよね。そのため明らかに画像に向いているとは言えないFFmpegを使ってどうにかしようとしたら、意外にどうにかできて嬉しいです。