Python PIL(Pillow)でテキストを描画する

PIL(Pillow)は画像編集するのにとても便利なパッケージです。

画像の縮小や連結等に用いられるでしょう。

そんなとき、画像にメモを残したいというシチュエーションはよくあると思います。

早速ソースです!

from PIL import Image, ImageDraw, ImageFont

# 画像を作成
image = Image.new("RGB", (200, 100), (255, 255, 255))

# ImageDrawオブジェクトを作成
draw = ImageDraw.Draw(image)

# テキストの位置、テキスト、色を指定して描画
draw.text((10, 10), "Hello, World!", fill=(0, 0, 0))

# 画像を表示
image.show()

PythonのPIL(Python Imaging Library)パッケージは、画像の処理・編集を手軽に行える便利なライブラリです。

目次

パッケージインストール

PIP

pip install pillow

Conda

conda install -c conda-forge pillow

テキスト描画の詳細

draw.textメソッドの引数は下記の通りです。

引数意味合い
xyテキストの開始位置を指定するタプルです。例:(x, y)。
text描画するテキストの文字列。
fillテキストの色を指定する。色はRGBタプル、RGBAタプル、または16進カラーコードとして指定できます。例:(255, 255, 255)、(255, 255, 255, 128)、”#FFFFFF”。
font使用するフォントを指定するImageFontインスタンス。指定しない場合、デフォルトのフォントが使用されます。
anchorテキストのアンカーポイントを指定する文字列。基準点(左上、中央上、右上など)を指定できます。
spacing行間のピクセル数。複数行のテキストを描画する場合に使用します。
alignテキストの水平方向の整列。”left”、”center”、”right”のいずれかを指定できます。
directionテキストの方向。”ltr”(左から右)または”rtl”(右から左)を指定できます。
featuresOpenTypeフォントのレイアウト機能を指定する文字列。
languageテキストの言語を指定する文字列。
stroke_widthテキストのストロークの幅を指定する整数。
stroke_fillストロークの色を指定する。色はRGBタプル、RGBAタプル、または16進カラーコードとして指定できます。

サンプルコード

上記の引数を使用してみます。

サンプルコード

from PIL import Image, ImageDraw, ImageFont

# 画像を作成
image = Image.new("RGB", (600, 300), (255, 255, 255))

# ImageDrawオブジェクトを作成
draw = ImageDraw.Draw(image)

# TTFフォントファイルからフォントを作成
custom_font = ImageFont.truetype("path/to/font_file.ttf", 24)

# テキストの位置、テキスト、色、フォント、ストロークを指定して描画
draw.text((10, 10), "Hello, Custom World!", fill=(0, 0, 255), font=custom_font, stroke_width=2, stroke_fill=(255, 0, 0))

# 複数行のテキストを描画
multiline_text = "This is a\nmultiline text\nexample."
draw.multiline_text((10, 50), multiline_text, fill=(0, 0, 0), font=custom_font, spacing=4, align="left")

# テキストの水平方向の整列を指定して描画
draw.multiline_text((300, 50), multiline_text, fill=(0, 0, 0), font=custom_font, spacing=4, align="center")

# テキストの方向を指定して描画
draw.text((10, 200), "Hello, RTL World!", fill=(0, 0, 0), font=custom_font, direction="rtl")

# 画像を表示
image.show()

このサンプルコードでは、以下のオプションを使用しています。

  1. 複数行のテキストの描画: draw.multiline_text() 関数を使用して、複数行のテキストを描画します。spacing 引数を使って、行間のピクセル数を指定します。
  2. テキストの水平方向の整列: align 引数を使用して、複数行のテキストの水平方向の整列を指定します。この例では、左揃えと中央揃えのテキストを描画しています。
  3. テキストの方向: direction 引数を使用して、テキストの方向を指定します。この例では、右から左にテキストを描画しています。通常、アラビア語やヘブライ語など、右から左に書かれる言語で使用されます。

これらのオプションを組み合わせて、さまざまなスタイルのテキストを描画できます。オプションに応じて、テキストのフォント、色、配置、方向などをカスタマイズして、画像に必要なテキストを追加することができます。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次