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”(右から左)を指定できます。 |
features | OpenTypeフォントのレイアウト機能を指定する文字列。 |
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()
このサンプルコードでは、以下のオプションを使用しています。
- 複数行のテキストの描画:
draw.multiline_text()
関数を使用して、複数行のテキストを描画します。spacing
引数を使って、行間のピクセル数を指定します。 - テキストの水平方向の整列:
align
引数を使用して、複数行のテキストの水平方向の整列を指定します。この例では、左揃えと中央揃えのテキストを描画しています。 - テキストの方向:
direction
引数を使用して、テキストの方向を指定します。この例では、右から左にテキストを描画しています。通常、アラビア語やヘブライ語など、右から左に書かれる言語で使用されます。
これらのオプションを組み合わせて、さまざまなスタイルのテキストを描画できます。オプションに応じて、テキストのフォント、色、配置、方向などをカスタマイズして、画像に必要なテキストを追加することができます。
コメント