みなさん、こんにちは。
今回はMP4用アルバムソングリスト画像の作成方法を紹介しようと思います。
前回の【第45回PYTHON講座】画像上に文字を書き込む の応用なので、あちらも併せて読んでください。
プログラムの内容
Youtubeにソングリストの動画が挙げられています。その動画の映像には曲名リストが表示されています。ただ、曲の変わっても、どの曲が再生されているかわかりません。なので、曲が演奏されている時は、その曲名を強調させるような画像を挿入すればいいと思い、今回のプログラムを作成するに至りました。
- テキストファイルに記載したソングリストを画像上に書き込む
- 2曲目のソングリストであれば、2曲目の曲文字を黒字にし、その他の曲は灰色にする
- ソングリストは1行目はアルバムのタイトルにする
- 作成される画像のファイル名は、入力画像ファイル名に数字2桁で表示する(ゼロ埋め)
ソングリストにある曲数分の画像が作成されることになります。
ソングリストファイルは下記のフォーマットになります。
Album Title
#1 Song1
#2 Song2
#3 Song3
使用するライブラリPIL(pillow)
画像ライブラリPIL(Python Imaging Library、通称pillow)を使用します。
インストールされていない方は、下記のコマンドを実施して、インストールをして下さい。
pip install pillow
プログラムコードの説明
from PIL import Image
from PIL import ImageFont
from PIL import ImageDraw
inputimg01 = "C:/Labo/buffer/input"
inputimg02 = ".jpg"
inputimg = inputimg01 + inputimg02
xpos, ypos = 400, 100
ftype = "C:/Windows/Fonts/ariblk.ttf"
fsize = 20
font = ImageFont.truetype(ftype, fsize)
filename = "C:/Labo/buffer/out/songlist.txt"
with open(filename) as f:
l = f.readlines()
for i in range(len(l)-1):
img = Image.open(inputimg).convert('RGB')
draw = ImageDraw.Draw(img)
for j in range(len(l)):
if(i+1 == j and j != 0):
draw.text((xpos, ypos+j*fsize), l[j], (0, 0, 0), font=font)
else:
draw.text((xpos, ypos+j*fsize), l[j], (100, 100, 100), font=font)
outimg = inputimg01 + f'{(i+1):02}' + inputimg02
img.save(outimg)
1~3行目 ライブラリのインポート
from PIL import Image
from PIL import ImageFont
from PIL import ImageDraw
Imageは画像ファイルを開くため、ImageFontは書き込む文字のフォントの設定、ImageDrawは文字を書き込むために使用します。
5~7行目 入力画像の各種設定
inputimg01 = "C:/Labo/buffer/input"
inputimg02 = ".jpg"
inputimg = inputimg01 + inputimg02
出力画像のファイル名を入力画像のファイル名+数字2桁とする為に、敢えて、拡張子を分けて定義しています。
9~12行目 位置、フォント設定
xpos, ypos = 400, 100
ftype = "C:/Windows/Fonts/ariblk.ttf"
fsize = 20
font = ImageFont.truetype(ftype, fsize)
xpos、ypos は文字を書き込む座標になります。画像の左上が原点(0,0)になります。
ftypeはフォントの設定になります。太字やイタリックなどの変更するオプションが無いので、太字やイタリックにしたい場合は、そのフォントファイルを選択して下さい。
Windowsの場合、C:/Windows/Fonts/ にフォントファイルが入っているので、好きなフォントを選んでみましょう。必ずフルパスで入力してください。上記の場合は、arialの太字のフォントになります。
fsizeはフォントの大きさになります。
14~16行目 ソングリストファイルの読み込み
filename = "C:/Labo/buffer/out/songlist.txt"
with open(filename) as f:
l = f.readlines()
lはリスト型になり、アルバム名、曲名が入力されます。
また、ファイルを開く後は閉じなければなりませんが、withで開いた場合は、実行後に閉じる処理が自動で行われるため、closeは不要になります。
19~21行目 曲名ファイルを作成するループ
for i in range(len(l)-1):
img = Image.open(inputimg).convert('RGB')
draw = ImageDraw.Draw(img)
曲数分の曲名ファイルを作成する為に、基礎のファイルを開きます。
23~30行目 曲名を画像に記入
for j in range(len(l)):
if(i+1 == j and j != 0):
draw.text((xpos, ypos+j*fsize), l[j], (0, 0, 0), font=font)
else:
draw.text((xpos, ypos+j*fsize), l[j], (100, 100, 100), font=font)
outimg = inputimg01 + f'{(i+1):02}' + inputimg02
img.save(outimg)
1つの曲名を黒とし、その他の曲名を灰色にします。
そして、その曲名の順番で、ファイル名に名前を付けます。f'{(i+1):02}’ とすることで、数字が一桁にはならず2桁になり、2桁目が0になります。
プログラムを実行すると、下記のように曲名が強調されたファイルが作成されます。
まとめ
いかがだったでしょうか。
MP3ファイルをMP4にまとめる場合、上記のように曲名が解る画像を挿入した方が、どの曲が再生されているかを知ることが出来、非常に有効です。
MP4にまとめられている方は、上記のプログラムを利用して、是非、曲名の画像を作ってみてはいかがでしょうか。
「役に立った!」と思れましたら、下のSNSボタンで記事のシェアをしていただけると嬉しいです!
コメント