![見出し画像](https://assets.st-note.com/production/uploads/images/69170154/rectangle_large_type_2_4ecd016034841b2fd989c18e59e01c9c.png?width=1200)
アニメーションGIFをつくる
Pythonのライブラリには複数の画像を連結し、アニメーションGIFをつくるものがある。使いようによっては、下記のように手順書のアニメーションをつくることもできる。
アニメーションGIFの例
プログラムは下記の通り。
from PIL import Image
import glob
files = sorted(glob.glob('*.png'))
images = list(map(lambda file: Image.open(file).quantize(), files))
images[0].save('anime.gif', save_all=True, append_images=images[1:], loop=0,optimize=False, duration=2000)
上記のプログラムは、同じフォルダ(ディレクトリ)にある「.png」を纏めてアニメーションを作る仕様なので、結合したい画像ファイルを配置して(下図)プログラムを実行すると、アニメーションが作成できる。(ちなみにduration=2000 変えれば画像の切替の早さを調整できる。)
この機能を活用しながら、○○ームバーグのBreaking Newsのようなアニメーションを作ってみたい。
BREAKING: Singapore’s economy expands 7.2% in 2021, the fastest full-year growth since 2010 https://t.co/Ry9RfntKDi pic.twitter.com/z1MYyVgCHR
— Bloomberg (@business) January 3, 2022
目を引くので、このGIFが気になっていたのだ。
では、早速やってみよう。
1.プログラム
import matplotlib.pyplot as plt
%matplotlib inline
# plt.rcParams["font.family"] = "fantasy"
plt.rcParams["font.family"] = "sans-serif"
plt.rcParams['axes.facecolor'] = '#ff001c'
fig, ax1 = plt.subplots(figsize=(12,6.75),facecolor="#ff001c")
ax1.axes.xaxis.set_visible(False)
ax1.axes.yaxis.set_visible(False)
fig.patch.set_facecolor('#ff001c')
# 画像作成処理1
for i in range(1,100,10):
#前の画像をクリアする処理
ax1.clear()
ax1.annotate("Hippenblog", (0.06,0.75),size=40,color="black",alpha=1,weight='bold')
ax1.annotate("Breaking", (0.05,0.35),size=110,color="white",alpha=1)
ax1.annotate("News", (0.05,0.10),size=110,color="black",alpha=1)
ax1.axhline(0.6,0.065,0.99/(100/(i+1)),color='white',linewidth=1 ,alpha=1)
fig.savefig("img"+ f'{i:03}' +".png")
# 画像作成処理2(線を動かす処理)
for i in range(100,200,10):
ax1.axhline(0.6,0.065,0.99/(100/(i-100+1)),color='red',linewidth=1 ,alpha=1)
fig.savefig("img"+ f'{i:03}' +".png")
#####################
from PIL import Image
import glob
def trim(path):
im = Image.open(path)
im_trimmed = im.crop((110,60,775,420))
return im_trimmed
if __name__ == '__main__':
files = sorted(glob.glob('*.png'))
files = [name for name in files if name.split(".")[-1] in ["png"]]
for val in files:
path = "./" + val
im_trimmed = trim(path)
im_trimmed.save("./"+val, quality=100)
files = sorted(glob.glob('*.png'))
images = list(map(lambda file: Image.open(file).quantize(), files))
images[0].save('anime.gif', save_all=True, append_images=images[1:], loop=0,optimize=False, duration=100)
2.実行結果
文字も動かしたかったけど難易度が高そうなので、とりあえず、「白いバー」だけうごかしてみた。
まぁ、それなりに良い感じにできたように思う。
早速、これで役に立たないニュース速報を流していきたいと思うw
2022年 年初来パフォーマンス ±0% pic.twitter.com/EMJ6jckn6u
— ひっぺん(米国株ブログ/Python) (@beikoku_kabu) January 3, 2022
正月さんがにちを過ぎて
— ひっぺん(米国株ブログ/Python) (@beikoku_kabu) January 4, 2022
ドル円と体重が年初来高値を更新中。 pic.twitter.com/QcEg8rTTpZ
複数の画像を結合して、アニメーションGIFを作成するコードの紹介でした。何かの参考になれば幸いです。
では!
「缶コーヒー1杯、ご馳走してあげよう」という太っ腹な人は投げ銭を!
課金しなくても、参考になったら「ハートボタン、フォロー、リツイート」をお願いします。読まれる可能性があがるので、次の記事を書くやる気が出ます。
ここから先は
¥ 100
この記事が気に入ったらサポートをしてみませんか?