ぷそさんのプログラミング研究所

【Pythonで画像編集】Pythonで画像にテキストを簡単に挿入する方法

画像編集をPythonでする方法について紹介します!

この記事を読んでできること
  • Pythonで画像にテキストを挿入する方法
  • テキストの大きさの変え方
  • テキストの色の変え方
  • テキストの縁取りの設定
目次

Pythonでテキストの挿入

まず,この記事を読むと下のような画像を作れます!

準備するもの

Pythonで画像編集をするには,PILと呼ばれるモジュールが必要です。

condapipでインストールしましょう。

私の環境はこんな感じです。

  • Python == 3.8

Pythonでテキストを挿入する方法

モジュールのインストール

まずは,モジュールをインストールします。

from PIL import Image, ImageFont, ImageDraw

画像の取得

編集したい画像を取得します。

img_input = Image.open('test.png').convert('RGBA')
# 1920 * 1080の画像
width, height = 1920, 1080

1行目:img_input =

'test.png'となっているところに,画像のファイル名を入れます。

jpgでもpngでも大丈夫です!

3行目:width, height =

画像の大きさを取得します。

今回は,わかりやすく1920×1080にしています。

フォントの設定

テキストのフォントについて設定します。

# フォント設定
font_path = "ヒラギノ角ゴシック W7.ttc"
font = ImageFont.truetype(font_path, 80)

2行目:font_path =

フォント名を指定しています。

特に希望がない場合はスキップしてもらって大丈夫です!

Windowsの場合は,'C:/Windows/Fonts/にあります。

Macの場合は,finder.ttf.ttcと検索すれば出てきます!

3行目:font =

フォントサイズを指定しています。

80のところに好きな数字を入れると大きさが変わります。

入力するテキストを設定

# テキストクラス作成
draw = ImageDraw.Draw(img_input)
# 入力するテキスト
text = "今年は2023年です。卯年です。"

2行目:draw =

テキストのクラスを作成します。

ここにテキストの情報を入れていくイメージです。

4行目:text =

いよいよ入力したいテキストを入力します。

テキストの装飾を設定

テキストの色や縁取りを設定します。

# テキストの装飾
text_color = "white"
stroke_color = "black"
stroke_width = 5

2行目:text_color = “white”

テキストのを決定します。

色は,blueblackなどは標準で入っているため使えます。

RGBで指定したい場合には,以下のようにします。

text_color = (255,0,0) #赤
3〜4行目

テキストの縁取りを設定しています。

stroke_colorは縁取りの色,stroke_widthには,縁取りの太さを設定します。

必要ない場合には何も入力しなくて大丈夫です。

テキストの位置を設定

テキストの位置を決定します。

多くの設定方法がありますが,一番便利そうなテキスト中心の座標で設定する場合について紹介します。

他の設定方法については,後述しています。

# テキストの位置
XX = width/2
YY = height/2

今回は,画像の中心にテキストを配置するために,高さと幅の半分の値にしています。

画像にテキストを挿入

これまでの設定をクラスに入れます。

# テキスト挿入
draw.text((XX, YY), 
          text, 
          fill = text_color, 
          stroke_fill = stroke_color, # 縁取りがない場合は不要
          stroke_width = stroke_width, # 縁取りがない場合は不要
          font=font, 
          anchor='mm',
         )

テキストを挿入した画像を保存

テキストを入力した画像を出力します。

img_output = img_input.convert('RGB')
img_output.save('test_output.png')

1行目:img_output =

pngjpgで保存する場合には,RGBにコンバートする必要があります。

2行目:img_output.save

ファイル名を設定して出力します。

いろんなパターンの挿入方法

いろんなパターンの挿入について紹介します!

テキストの位置の設定

テキストの位置は,テキストボックスの9個の点のうち1点を設定するイメージです。

anchor='lm'とすると,左端で中心の点の位置を指定します。

以下のコードを実行すると,下の画像が出力されます。

from PIL import Image, ImageFont, ImageDraw

# 1920 * 1080の画像
width, height = 1920, 1080

img_input = Image.new('RGB', (1920, 1080), 'lightgrey')

# フォント設定
font_path = "ヒラギノ角ゴシック W7.ttc"
font = ImageFont.truetype(font_path, 80)

# テキストクラス作成
draw = ImageDraw.Draw(img_input)
# 入力するテキスト
text = "今年は2023年です。卯年です。"
# テキストの装飾
text_color = "white"
stroke_color = "black"
stroke_width = 5
# テキストの位置
XX = width/2
YY = height/2

# テキスト挿入
draw.text((XX, YY), 
          text, 
          fill = text_color, 
          stroke_fill = stroke_color,
          stroke_width = stroke_width,
          font=font, 
          anchor='lm',
         )

img_output = img_input.convert('RGB')
img_output.show()

複数行入力する場合

複数行入力するには,区切り文字を入力します。

from PIL import Image, ImageFont, ImageDraw

# 1920 * 1080の画像
width, height = 1920, 1080

img_input = Image.new('RGB', (1920, 1080), 'lightgrey')

# フォント設定
font_path = "ヒラギノ角ゴシック W7.ttc"
font = ImageFont.truetype(font_path, 80)

# テキストクラス作成
draw = ImageDraw.Draw(img_input)
# 入力するテキスト
text = "今年は2023年です。\n卯年です。"
# テキストの装飾
text_color = "white"
stroke_color = "black"
stroke_width = 5
# テキストの位置
XX = width/2
YY = height/2

# テキスト挿入
draw.text((XX, YY), 
          text, 
          fill = text_color, 
          stroke_fill = stroke_color,
          stroke_width = stroke_width,
          font=font, 
          anchor='mm',
         )

img_output = img_input.convert('RGB')
img_output.show()
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

このブログでは,PythonやLaTeXの使い方などを紹介しています!
仕事でも趣味でもプログラミングをしています。
ブログは2022年8月にスタートしました。
【経歴】東京大学大学院修了→大手IT企業勤務

コメント

コメントする

目次