![広告メディア事業部](/_next/image?url=https%3A%2F%2Fapi.rightcode.co.jp%2Fwp-content%2Fuploads%2F2022%2F08%2Fcropped-icon_tobaru_2_150150-150x150.png&w=64&q=75)
【Python】ArtistAnimationを使って複数の図からアニメーションを作ってみた
![広告メディア事業部](/_next/image?url=https%3A%2F%2Fapi.rightcode.co.jp%2Fwp-content%2Fuploads%2F2022%2F08%2Fcropped-icon_tobaru_2_150150-150x150.png&w=64&q=75)
IT技術
![](/_next/image?url=https%3A%2F%2Fapi.rightcode.co.jp%2Fwp-content%2Fuploads%2F2020%2F03%2FPython%E3%82%A2%E3%83%8B%E3%83%A1.jpg&w=3840&q=75)
ArtistAnimationでアニメーションに挑戦
1つのフォルダに入っている、たくさんの画像や図、写真を連続して表示させて、アニメーション的動画にしたい。
今回は、そんな方のために、コードをPythonで書いて行きたいと思います!
ArtistAnimationとは?
すでに出来上がってる図を、Python でアニメーション化する時の王道は「matplotlib」の「ArtistAnimation」でしょうか。
「matplotlib」からの「ArtistAnimation」の詳細な説明はコチラ!
【matplotlib:ArtistAnimation 説明サイト】
https://matplotlib.org/api/_as_gen/matplotlib.animation.ArtistAnimation.html
ArtistAnimation を使うと、沢山の「jpgファイル」や「pngファイル」を1つのフォルダに入れることで、Pythonで簡単に gifアニメにすることができます。
ちなみに、画像については、写真でもペイントソフトで書いた図でも、問題ありません。
ArtistAnimationの説明
複数の画像を動画化させる「matplotlib」の中の「ArtistAnimation」というコマンドは、下記の関数で出来ています。
ArtistAnimation(fig, artists [, interval] [, repeat delay] [, repeat] [, blit])
うち [] は、デフォルト値が入っていて、省略可能なパラメータです。
パラメータの詳細
各パラメータの意味はコチラになります。
描画のサイズなど。
Figure。
描画したい図のリスト。
list関数にしてください。
(option)
何ミリ秒ごとに図を変えるか。
デフォルトでは200ミリ秒ごと。
numberです。
(option)
アニメーションを繰り返させる場合、終了から再開まで何ミリ秒にするか。
デフォルトでは0。
numberです。
(option)
繰り返しをさせるかどうか。
TrueかFalseかで、デフォルトでは True の繰り返しアリになっています。
(option)
転送するかどうか。
TrueかFalseかで、デフォルトでは False になっています。
ArtistAnimationでアニメーションが完成
それでは、実際に「ArtistAnimation」を使ってみます。
まずは、動画化したい画像を1つのフォルダに入れます。
今回 Python で動画にするのは、下の電磁場解析に関する5つの画像です。
![](https://api.rightcode.co.jp/wp-content/uploads/2020/03/python-artistanimation-creating-animations-multiple-diagrams.png)
これを「anime」という名前のフォルダに入れました。
この、フォルダに入れる画像の保存形式は、「png」でも「jpg」でも問題ないことを確認しています。
ArtistAnimationデフォルト 軸ありアニメーション
あとは、下記のコードに「図の入ったフォルダ名」「読み込みたいファイル形式」「出来上がった動画の保存ファイル名」を入れるだけです。
1import glob
2from PIL import Image
3
4import matplotlib.pyplot as plt
5import matplotlib.animation as animation
6
7#フォルダ名を入れます
8folderName = "anime"
9
10#該当フォルダから画像のリストを取得。読み込みたいファイル形式を指定。ここではpng
11picList = glob.glob(folderName + "\*.png")
12
13#figオブジェクトの作成
14fig = plt.figure()
15
16#空のリスト作成
17ims = []
18
19#画像ファイルを空のリストの中に1枚ずつ読み込み
20for i in range(len(picList)):
21
22 #読み込んで付け加えていく
23 tmp = Image.open(picList[i])
24 ims.append([plt.imshow(tmp)])
25
26#アニメーション作成
27ani = animation.ArtistAnimation(fig, ims, interval=300, repeat_delay=1000)
28
29#アニメーション保存。ファイル名を入れてください。ここではtest.gif
30ani.save("test.gif")
gifアニメは、プログラムと同じフォルダに作成されます。
完成した動画
出来上がった動画はコチラ!
![](https://api.rightcode.co.jp/wp-content/uploads/2020/03/python-artistanimation-creating-animations-multiple-diagrams_animation.gif)
発表などに使いたいので、interval は「300」と長めにしました。
完成したアニメーションを改善
これでも動画としては、許容範囲かもしれません。
ですが、matplot なだけに、周りに余計な軸がついてしまっています。
そこで、「軸」や「数字」を消したコードはこちらになります。
1import glob
2from PIL import Image
3
4import matplotlib.pyplot as plt
5import matplotlib.animation as animation
6
7#フォルダ名を入れます
8folderName = "anime"
9
10#該当フォルダから画像のリストを取得。読み込みたいファイル形式を指定。ここではpng
11picList = glob.glob(folderName + "\*.png")
12
13#figオブジェクトの作成
14fig = plt.figure()
15
16#figオブジェクトから目盛り線などを消す
17plt.tick_params(bottom=False,
18 left=False,
19 right=False,
20 top=False)
21plt.tick_params(labelbottom=False,
22 labelleft=False,
23 labelright=False,
24 labeltop=False)
25
26#空のリスト作成
27ims = []
28
29#画像ファイルを空のリストの中に1枚ずつ読み込み
30for i in range(len(picList)):
31
32 #読み込んで付け加えていく
33 tmp = Image.open(picList[i])
34 ims.append([plt.imshow(tmp)])
35
36#アニメーション作成
37ani = animation.ArtistAnimation(fig, ims, interval=300, repeat_delay=1000)
38
39#アニメーション保存。ファイル名を入れてください。ここではtest.gif
40ani.save("test.gif")
完成した動画
出来上がりは、こんな感じになりました!
![](https://api.rightcode.co.jp/wp-content/uploads/2020/03/python-artistanimation-creating-animations-multiple-diagrams_animation2.gif)
さいごに
いかがだったでしょうか?
ArtistAnimation は、Python で写真や図などを動画化するのに、最も簡単なコマンドの1つだと思います。
上のコードに、アニメーション化したいファイルが入った「フォルダ名」「ファイルの保存形式」「保存したいファイル名(変えなくてもいいです)」を入れるだけなので、とっても簡単です。
ちょっとしたプレゼン、発表などの時にも役立つのではないでしょうか?
ぜひ、ご参考くださいね!
こちらの記事もオススメ!
2020.07.30Python 特集実装編※最新記事順Responder + Firestore でモダンかつサーバーレスなブログシステムを作ってみた!P...
2020.07.17ライトコード的「やってみた!」シリーズ「やってみた!」を集めました!(株)ライトコードが今まで作ってきた「やってみた!」記事を集めてみました!※作成日が新し...
ライトコードでは、エンジニアを積極採用中!
ライトコードでは、エンジニアを積極採用しています!社長と一杯しながらお話しする機会もご用意しております。そのほかカジュアル面談等もございますので、くわしくは採用情報をご確認ください。
採用情報へ
![広告メディア事業部](/_next/image?url=https%3A%2F%2Fapi.rightcode.co.jp%2Fwp-content%2Fuploads%2F2022%2F08%2Fcropped-icon_tobaru_2_150150-150x150.png&w=3840&q=75)
「好きを仕事にするエンジニア集団」の(株)ライトコードです! ライトコードは、福岡、東京、大阪の3拠点で事業展開するIT企業です。 現在は、国内を代表する大手IT企業を取引先にもち、ITシステムの受託事業が中心。 いずれも直取引で、月間PV数1億を超えるWebサービスのシステム開発・運営、インフラの構築・運用に携わっています。 システム開発依頼・お見積もり大歓迎! また、現在「WEBエンジニア」「モバイルエンジニア」「営業」「WEBデザイナー」「WEBディレクター」を積極採用中です! インターンや新卒採用も行っております。 以下よりご応募をお待ちしております! https://rightcode.co.jp/recruit