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

記事内に商品プロモーションを含む場合があります。
2020.10.27 64 views

文字列画像

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

入門 Python 3
カテゴリ:プログラミング入門書
売れ筋ランキング:178位
価格:¥3,980

関連記事