pythonを使って文字列の画像を生成する方法
文字列画像
このサイトでもよく使っていますが、文字を大きく書いた画像ファイルをサムネイルに使いたい時にがあります。
ペイント系のソフトを使って作成するのは、めんどくさいのでスクリプト言語を使って生成します。
スクリプト言語は、python が使い慣れているので python でやります。
文字列を画像にするコード
実行するためには、事前にpip install pillow
などとして PIL をインストールしておく必要があります。
次のコードを適当なファイル名txt-img.py
などで保存してください。
import os
import sys
import string
from PIL import Image
from PIL import ImageFont, ImageDraw, ImageOps
width, height = 800, 450
text = sys.argv[1]
font_size = 120
ttfontname = "/mnt/c/Windows/Fonts/JetBrainsMono-ExtraBold.ttf"
img = Image.new("L", (width, height), color=255)
font = ImageFont.truetype(ttfontname, font_size)
draw = ImageDraw.Draw(img)
w, h = draw.textsize(text, font=font)
h += int(h*0.21)
draw.text(((width-w)/2, (height-h)/2), text=text, fill='black', font=font)
img.save(text + '.png')
※WSL2 上で実行しているので/mnt/c/Windows/Fonts/
みたいなディレクトリの指定になっています。
ttfontname
はフォントをしている部分で、好みのフォントを指定してください。
私の場合は指定した文字列をファイル名にするのがわかりやすいので、このようにimg.save(text + '.png')
しています。
コードを保存して、次のようなコマンドpython3 txt-img.py python
を実行すると、800×450 サイズの白い四角の中心に python と書かれた画像が生成されます。