サムネイル画像

pythonを使って文字列の画像を生成する方法

2020.10.27

文字列画像

このサイトでもよく使っていますが、文字を大きく書いた画像ファイルをサムネイルに使いたい時にがあります。 ペイント系のソフトを使って作成するのは、めんどくさいのでスクリプト言語を使って生成します。 スクリプト言語は、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と書かれた画像が生成されます。