【Python】文字の画像化(透過PNG画像も対応)

【Python】文字の画像化(透過PNG画像も対応) プログラミング

「白背景に黒文字の文字画像をプログラムでサクッと作りたい」
「透過文字の画像を簡単に作りたい」

このような場合には、この記事の内容が参考になります。
この記事では、Pythonで文字画像を簡単に作成する方法を解説しています。

本記事の内容

  • 文字画像とは?
  • Pythonによる文字画像作成のための準備
  • Pythonによる文字画像作成

それでは、上記に沿って解説していきます。

文字画像とは?

文字画像とは、文字が描かれている画像のことです。
ここでは、以下の3タイプを想定しています。

  • 黒背景に白文字
  • 白背景に黒文字
  • 文字だけ(透過ファイル)

よくある使い方は、他の画像と結合する使い方です。

最近では、画像生成の技術を用いて次のような文字画像も生成できます。

その際には、「白背景に黒文字」の画像を利用することになります。
それはそうと、最近の文字画像の進化には驚かされますね。

以上、文字画像について説明しました。
次は、Pythonによる文字画像作成のための準備を説明します。

Pythonによる文字画像作成のための準備

Pythonで文字画像を作成するための準備を説明します。
必要なモノは、以下。

  • Python
  • Pillow(Pythonライブラリ)
  • 文字フォント

それぞれを以下で説明します。

Python

Pythonのバージョンは、次のPython公式開発サイクルに従います。

バージョンリリース日サポート期限
3.72018年6月27日2023年6月27日
3.82019年10月14日2024年10月
3.92020年10月5日2025年10月
3.102021年10月4日2026年10月
3.112022年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.newdraw.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による文字画像作成を説明しました。

タイトルとURLをコピーしました