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

【Pythonで画像編集】画像に袋文字・縁取り文字を挿入する方法

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

今回は,袋文字を呼ばれるYouTubeでよく使われる文字の挿入方法を紹介します。

下のような画像です!

この記事を読んで出来ること

● Pythonで画像にテキストを挿入する方法
● 袋文字を挿入する方法

目次

Pythonで袋文字の挿入

まず,この記事を読むと下のような「文字の周りに2つの縁取り」がある画像が作れます。

とても見やすいため,テレビやYouTubeのテロップに使われています。

準備するもの

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

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

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

  • macOS Monterey 12.5
  • Python == 3.8.15

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 = (195,40,110)
# 縁取り内側
stroke_in_color = "white"
stroke_in_width = 5
# 縁取り外側
stroke_out_color = "black"
stroke_out_width = 10
2行目:text_color =

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

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

RGBで指定したい場合には,(195,40,110)のようにします。

3〜5行目

内側の縁取りを設定しています。

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

こちらの色も,blueblack(195,40,110)のように設定します。

6〜8行目

外側の縁取りを設定しています。

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

stroke_out_widthは,stroke_in_widthよりも大きい値を設定します!

2倍くらいがおすすめです。

こちらの色も,blueblack(195,40,110)のように設定します。

テキストの位置を設定

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

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

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

詳しい設定方法については,下の記事で紹介しています。

あわせて読みたい
【Pythonで画像編集】Pythonで画像にテキストを簡単に挿入する方法 画像編集をPythonでする方法について紹介します!  この記事を読んでできること Pythonで画像にテキストを挿入する方法 テキストの大きさの変え方 テキストの色の変え方...

画像にテキストを挿入

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

二つの文字を重ねるイメージなので,2回挿入しています!

# テキスト挿入(外側の縁取り)
draw.text((XX, YY), 
          text, 
          fill = text_color, 
          stroke_fill = stroke_out_color,
          stroke_width = stroke_out_width,
          font=font, 
          anchor='mm',
         )

# テキスト挿入(外側の縁取り)
draw.text((XX, YY), 
          text, 
          fill = text_color, 
          stroke_fill = stroke_in_color,
          stroke_width = stroke_in_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

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

まとめ

今回のソースコードは以下の通りです。

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, 120)

# テキストクラス作成
draw = ImageDraw.Draw(img_input)
# 入力するテキスト
text = "今年は2023年です。卯年です。"
# テキストの装飾
text_color = (195,40,110)
# 縁取り内側
stroke_in_color = "white"
stroke_in_width = 5
# 縁取り外側
stroke_out_color = "black"
stroke_out_width = 10
# テキストの位置
XX = width/2
YY = height/2

# テキスト挿入(外側の縁取り)
draw.text((XX, YY), 
          text, 
          fill = text_color, 
          stroke_fill = stroke_out_color,
          stroke_width = stroke_out_width,
          font=font, 
          anchor='mm',
         )

# テキスト挿入(外側の縁取り)
draw.text((XX, YY), 
          text, 
          fill = text_color, 
          stroke_fill = stroke_in_color,
          stroke_width = stroke_in_width,
          font=font, 
          anchor='mm',
         )

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

この記事を書いた人

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

コメント

コメントする

目次