見出し画像

【Python講座】複数の画像から動画を作ろう(おまけ:描いたイラストができあがるまで)

みなさんこんばんは、ゆにこーんです🦄✨
今日は久しぶりに【Python講座】のお時間です。

みなさん、撮った写真や保存した画像をgifとして、あるいは動画として生成したいと思ったことはありませんか?
例えばコマ撮り動画を作りたいとか、何かの手順を簡単な動画にしたいとかです。

私の場合、イラストを描いたけどその手順も共有できたらいいな〜と思っていました。動画編集ソフトを使えばいいじゃん、って考えるのが一般的というか、クリエイターなら動画編集ソフトでちゃちゃっとやってしまいなよって思いますよね。

しかし、プログラミングという便利なものを知って以来、動画編集ソフト自体を立ち上げる時間があればそれだけでやりたいことができるのでは?という思考に陥ってしまい、コードをちゃちゃっと組んでパパパッと作り上げることができる限りそうしています。
(クリエイティブな要素が求められる作業はそうはいきませんが😅)

ということで、今回は、
”Pythonを用いて複数枚の画像から動画(gif,mov,mp4)を作成しよう”
と思います。

1. 画像を用意しよう

Pythonを用いて複数枚の画像から動画を作成するにあたり、
まずは画像を用意しましょう。

私は最近描いたイラストの手順を動画にしようと思います。
ちなみに完成したイラストはコレ(↓)です。

キサキ

このイラストはまたまた「東京リベンジャーズ」に登場する”稀咲鉄太”という人物です。(ちなみに右下にあるロゴはゆにこーんのイラストをインスタ等で投稿するときに毎回付けようと思って作った可愛めのロゴです。笑)

この画像を完成させるまでの途中経過みたいな画像を何枚か保存しました。
ちなみに線画のみのものはコレ(↓)です。

画像2

この線画を描くためだけでも工程は多いので、今回は線を描く工程は省いて、ここから色を塗っていく手順を動画にします。
ちなみに複数枚の画像の名前は、それぞれ「0.png」,「1.png」...のように、順番に番号で名前をつけておいてください。

2. コードを書こう

それでは次にPythonコードを書いていきましょう。
ちなみに私の環境は以下の通りです。

mac book air (OS:Catalina, Intel core i5(10世代), メモリ16GB)
Python ver.3.7.6
エディタ:VScode
必要ライブラリ:PIL

もしまだPythonの開発環境ができていない方は以下の記事を参考にしてみてください。

PILが必要となるので、インストールがまだの方は、まずはターミナルまたはコマンドプロンプトで以下を入力してインストールしましょう。

<ターミナルまたはコマンドプロンプト>

pip install Pillow

それではPythonコードを書いていきます。

<Python>

from PIL import Image

photo = []

for i in range(画像の枚数):
   img_name = './'+str(i)+'.png'
   img = Image.open(img_name)
   photo.append(img)

photo[0].save('名前.gif', save_all=True, append_images=photo[1:],
               optimize=False, duration=200, loop=1)

これだけです。
簡単にそれぞれ説明します。

from PIL import Image

これはPILからImageというモジュールをインポートしています。

photo = []

'photo'という配列を作ります。この配列(箱)の中に複数枚の画像を後から突っ込みます。

for i in range(画像の枚数):
   img_name = './'+str(i)+'.png'
   img = Image.open(img_name)
   photo.append(img)

画像の枚数分だけfor文で繰り返し作業をします。

'img_name'には、複数枚の画像を指定しています。
(str(i).pngというのは、複数枚の画像のi枚目を指しています。)
(※複数枚の画像の名前は、それぞれ「0.png」,「1.png」...のように、順番に番号で名前をつけておいてください。)

そして、'img'という名でそれぞれ画像を開き、
さきほどの'photo'の配列の中にappendしていきます。(入れていきます)

photo[0].save('名前.gif', save_all=True, append_images=photo[1:],
               optimize=False, duration=200, loop=1)

最後に、保存したいgifの名前や表示時間、回数などを指定していきます。
'名前.gif'のところには保存したいgifのファイル名をつけてください。
durationには、1枚の画像を表示する時間(ミリ秒)を指定してください。
loopには、ループしたい回数を指定してください。(0にすると無限再生)

3. 完成したものがこちら

これでPythonコードを実行すれば完成です。
以下が完成したものです。(↓)

画像3

4. MOVやmp4にはできないの?

gifにできることはわかったけど、MOVやmp4にはできないの?と思いますよね。結論、さきほどのコードの'名前.gif'を’名前.MOV’にすればできるってわけではありません。あくまでgifだけです。

しかし、落ち込むことはありません。
作ったgifからMOやmp4を生成すればいいだけです。


必要なライブラリをひとつインストールする必要がありますが、
Pythonコード自体は4行で済みます。
(Moviepyというライブラリを用います。)

<ターミナルまたはコマンドプロンプト>

pip install moviepy
<Python>

import moviepy.editor as mp

clip = mp.VideoFileClip('先ほど生成したgif.gif')
clip.write_videofile('生成したい動画.mp4')

clip.close()

これだけです。
'生成したい動画'のところにMOVやmp4など好きな形式をいれてください。

5. 逆に動画ファイルからgifを生成できないの?

結論→できます。
これは以前紹介しているので、そちらを見てもらうといいと思います。

正直、Pythonが少しできれば簡単な動画等の生成は秒でできます。
コードも使い回しができますので、一度コードを組んでおけばかなり楽です。
”めちゃくちゃ便利なのに、Pythonに日和ってるやついる?”
”−いねえよなぁ!!?”

(あるキャラクターの有名セリフです。笑)

6. おわりに

今回も最後までご覧いただき、ありがとうございます✨
みなさんもPythonを使ってみたいという気になりましたか??笑

それではまた次回の記事でお会いしましょう❗️❗️ばーい🦄

この記事が気に入ったらサポートをしてみませんか?