あるぞ、ITの可能性 | Python
上記はPythonで作った画像を動画に重ねてみたところです。
Pythonには本当に、何でもありますね。
上記参考サイトのサンプルに対して以下の機能を追加しました。
①コンソールから次々、文を指定できるように
②ファイル名は自動的にユニークに
③背景を半透明に
④文字列をセンタリングする
解説①
ほぼ説明は不要でしょう。
while True: print("Input text...") text = input() # 中身の処理
解説②
こちらも、datetime
モジュールから日時時刻を取得しユニークな文字列を生成し、ファイル名にします。
import datetime time = datetime.datetime.now().strftime('%Y%m%d%H%M%S') im.save("./img/"+time+".png")
解説③
半透明化は背景をRGBフォーマットからRGBAに変更し、色の4つ目が透過度です。
ここでは、およそ半分の120にしました。
# RGB, 画像サイズ, 背景色を設定 im = Image.new("RGBA", (2120, 140), (0, 0, 0, 120)) # (x,y),(R,G,B,A)
解説④
センタリングは一見、組込みでパラメータがあります。
# 描画位置、描画する文字、文字色、フォントを指定 # 改行は\n draw.multiline_text((0, 0), text, fill=(255, 255, 0), font=font, align='center') # Yellow
しかし、こちらは、画像に対してセンタリングではなく、文字列に対してセンタリングになります。
試しに右寄せalign='right'
にしてみると、以下のようになります。
センタリングするには、改行と適当な文字列(ここではアンダーバー)を設定し、アンダーバーが出力画像サイズになるようにします。
text = input() text += "\n_______________________________"
改行後の文字は画像の外になります。
ソースコード
from PIL import Image, ImageDraw, ImageFont import datetime while True: print("Input text...") text = input() if text == "": text = "無いぞ知名度SCSK" text += "\n_______________________________" # RGB, 画像サイズ, 背景色を設定 im = Image.new("RGBA", (2120, 140), (0, 0, 0, 120)) # (x,y),(R,G,B,A) draw = ImageDraw.Draw(im) # PCローカルのフォントへのパスと、フォントサイズを指定 fontsize = 100 # 140 font = ImageFont.truetype('C:/Windows/Fonts/meiryob.ttc', fontsize) # 描画位置、描画する文字、文字色、フォントを指定 # 改行は\n draw.multiline_text((0, 0), text, fill=(255, 255, 0), font=font, align='center') # Yellow # ファイルに出力 time = datetime.datetime.now().strftime('%Y%m%d%H%M%S') im.save("./img/"+time+".png")