「白背景に黒文字の文字画像をプログラムでサクッと作りたい」
「透過文字の画像を簡単に作りたい」
このような場合には、この記事の内容が参考になります。
この記事では、Pythonで文字画像を簡単に作成する方法を解説しています。
本記事の内容
- 文字画像とは?
- Pythonによる文字画像作成のための準備
- Pythonによる文字画像作成
それでは、上記に沿って解説していきます。
文字画像とは?
文字画像とは、文字が描かれている画像のことです。
ここでは、以下の3タイプを想定しています。
- 黒背景に白文字
- 白背景に黒文字
- 文字だけ(透過ファイル)
よくある使い方は、他の画像と結合する使い方です。
最近では、画像生成の技術を用いて次のような文字画像も生成できます。
その際には、「白背景に黒文字」の画像を利用することになります。
それはそうと、最近の文字画像の進化には驚かされますね。
以上、文字画像について説明しました。
次は、Pythonによる文字画像作成のための準備を説明します。
Pythonによる文字画像作成のための準備
Pythonで文字画像を作成するための準備を説明します。
必要なモノは、以下。
- Python
- Pillow(Pythonライブラリ)
- 文字フォント
それぞれを以下で説明します。
Python
Pythonのバージョンは、次のPython公式開発サイクルに従います。
バージョン | リリース日 | サポート期限 |
3.7 | 2018年6月27日 | 2023年6月27日 |
3.8 | 2019年10月14日 | 2024年10月 |
3.9 | 2020年10月5日 | 2025年10月 |
3.10 | 2021年10月4日 | 2026年10月 |
3.11 | 2022年10月25日 | 2027年10月 |
基本的には、これに従っておけば問題はないでしょう。
でも、Python 3.10以降がオススメです。
Pillow(Pythonライブラリ)
画像を生成する際に、Pillowを利用します。
Pillowについては、次の記事で説明しています。
インストールは、必須です。
文字フォント
日本語扱うなら、日本語に対応した文字フォントが必要となります。
windowsであれば、「C:\Windows\Fonts」にフォントが保存されています。
個人的には、ここのフォントは利用しません。
利用しているのは、次のフォントです。
- IPAexGothic
- LINE Seed JP
IPAexGothicについては、次の記事で説明しています。
LINE Seed JPは、次のページからダウンロードできます。
https://seed.line.me/index_jp.html
太字を利用する場合は、次のフォントがオススメです。
以上、Pythonによる文字画像作成のための準備を説明しました。
次は、Pythonによる文字画像作成を説明します。
Pythonによる文字画像作成
準備が整っていれば、あとは次のコードを実行するだけです。
from PIL import Image, ImageDraw, ImageFont # テキストと画像のサイズを設定 text = "文字画像" image_size = (1024, 704) # これはピクセル単位です # フォントのパスとサイズを設定 font_path = "LINESeedJP_TTF_Eb.ttf" font_size = 215 # 画像と描画コンテキストを作成 image = Image.new("RGBA", image_size, (0, 0, 0, 255)) draw = ImageDraw.Draw(image) # フォントを設定 font = ImageFont.truetype(font_path, font_size) # テキストのサイズを取得 text_width, text_height = draw.textsize(text, font=font) # テキストの開始位置を計算 x = (image_size[0] - text_width) / 2 y = (image_size[1] - text_height) / 2 # テキストを描画 draw.text((x, y), text, fill=(255, 255, 255, 255), font=font) # 画像を保存 image.save("text_image.png")
上記を実行すれば、次のような画像を作成できます。
これは、「黒背景に白文字」のパターンです。
パターンを変更するには、以下を変更します。
image = Image.new("RGBA", image_size, (0, 0, 0, 255)) ~ draw.text((x, y), text, fill=(255, 255, 255, 255), font=font)
パターン別に設定する値は、次のようになります。
パターン | Image.new | draw.text |
黒背景に白文字 | (0, 0, 0, 255) | (255, 255, 255, 255) |
白背景に黒文字 | (255, 255, 255, 255) | (0, 0, 0, 255) |
文字(青色)だけ(透過ファイル) | (0, 0, 0, 0) | (0, 0, 255, 255) |
画像サイズや文字フォントサイズは、適宜調整します。
文字は常に中央に表示されるようになっています。
改行コードを用いれば、改行可能です。
text = "文字画像\nFONT"
簡単なコードのため、各自で調整も可能でしょう。
そもそも、このコードはChatGPTに書いてもらいました。
以上、Pythonによる文字画像作成を説明しました。