ルパン三世タイトル画面風GIFアニメーションを作る
テレビアニメ・ルパン三世のタイトル画面風のGIFアニメーションを作ります。特大フォントで一文字づつ表示し、最後にタイトル全体を表示します。
関連記事
環境
- windows10 home
- Anaconda 3/ jupyter notebook 5.6.0
- Python 3.7.0
- Pillow 5.2.0
コード
11文字からなるタイトルから一文字ずつ取り出して400ptで画像の中央に表示させ、最後にタイトル全体を表示します。タイトル全体は2行に表示しますが、タイトルを1~6文字目とそれ以降の2つに分割するためモジュールtextwrapを使用しています。
from PIL import Image, ImageDraw, ImageFont import textwrap title = '殺し屋はブルースを歌う' images =[] # イメージ用リスト for letter in title: # for文でタイトルから一文字づつ取り出す im = Image.new('RGB', (640, 480), (0, 0, 0)) # 下地となるイメージオブジェクトの生成 draw = ImageDraw.Draw(im) # drawオブジェクトを生成 font = ImageFont.truetype('C:\Windows\Fonts\msmincho.ttc', 400) # フォントの指定 draw.multiline_text((120, 40), letter, fill=(255,255,255), font=font) # 文字の描画 images.append(im) # リストにイメージを追加 wrap_list = textwrap.wrap(title, 6) # タイトルを6文字で改行しリストwrap_listに代入 im = Image.new('RGB', (640, 480), (0, 0, 0)) # 下地となるイメージオブジェクトの生成 draw = ImageDraw.Draw(im) # drawオブジェクトを生成 font = ImageFont.truetype('C:\Windows\Fonts\msmincho.ttc', 96) # フォントの指定 draw.multiline_text((35, 120), wrap_list[0], fill=(255,255,255), font=font) # タイトル1行目描画 draw.multiline_text((35, 280), wrap_list[1], fill=(255,255,255), font=font) # タイトル2行目描画 for i in range(8): # 同じ画像を8枚追加するためfor文 images.append(im) # リストにイメージを追加 images[0].save('Lupin_title.gif',save_all=True,append_images=images[1:],optimize=False,duration=400,loop=0) # gif動画保存
実行結果
ルパン三世のタイトルっぽいGIFアニメーションが保存されます。
画像1枚あたり400msで表示されます。タイトル全体の画像は同じ画像が8枚連続しており3秒以上表示されるようにしています。
以下のサイトを参考にさせていただきました
note.nkmk.me>>Pythonで文字列を折り返し・切り詰めして整形するtextwrap