画像編集をPythonでする方法について紹介します!
今回は,袋文字を呼ばれるYouTubeでよく使われる文字の挿入方法を紹介します。
下のような画像です!


● Pythonで画像にテキストを挿入する方法
● 袋文字を挿入する方法
Pythonで袋文字の挿入
まず,この記事を読むと下のような「文字の周りに2つの縁取り」がある画像が作れます。
とても見やすいため,テレビやYouTubeのテロップに使われています。

準備するもの
Pythonで画像編集をするには,PILと呼ばれるモジュールが必要です。
condaやpipでインストールしましょう。
私の環境はこんな感じです。
- 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, 10801行目: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 = 102行目:text_color =
テキストの色を決定します。
色は,blueやblackなどは標準で入っているため使えます。
RGBで指定したい場合には,(195,40,110)のようにします。
3〜5行目
内側の縁取りを設定しています。
stroke_in_colorは縁取りの色,stroke_in_widthには,縁取りの太さを設定します。
こちらの色も,blue,black,(195,40,110)のように設定します。
6〜8行目
外側の縁取りを設定しています。
stroke_out_colorは縁取りの色,stroke_out_widthには,縁取りの太さを設定します。
stroke_out_widthは,stroke_in_widthよりも大きい値を設定します!
2倍くらいがおすすめです。
こちらの色も,blue,black,(195,40,110)のように設定します。
テキストの位置を設定
テキストの位置を決定します。
# テキストの位置
XX = width/2
YY = height/2今回は,画像の中心にテキストを配置するために,高さと幅の半分の値にしています。
詳しい設定方法については,下の記事で紹介しています。

画像にテキストを挿入
これまでの設定をクラスに入れます。
二つの文字を重ねるイメージなので,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 =
pngやjpgで保存する場合には,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')

コメント