こんにちは、DXCEL WAVEの運営者(@dxcelwave)です!
- Pythonによる画像処理に興味がある。
- PythonとPillowを用いて「好みのテキストを画像に挿入する方法」が知りたい。
【Python】Pillowとは
Pillowとは、画像処理に特化したPythonのライブラリです。
Pillowをもとに、画像読込・加工・合成・保存・フィルタリング・トリミング・リサイズ・回転・クロップなど、多くの画像処理の操作が可能です。
Pillowは、Python 2.7およびPython 3.xで動作します。また、png
、jpeg
を始め、多くのファイル拡張子をサポートしています。
Pillowライブラリのインストール
Pillowライブラリのインストールが未済の場合、コマンドプロンプト(Windows)やターミナル(Mac)を開き、以下を実行しておきましょう。
pip install Pillow
【Python×Pillow実践】テキストを画像に挿入
PythonとPillowライブラリを用いて、上図のように、画像内にテキストを挿入する方法を解説します。
Pythonライブラリ読込
Pillowライブラリを読み込みます。先頭に以下のコードを配置しましょう。
from PIL import Image, ImageDraw, ImageFont
画像の入出力設定
加工する画像のファイルパスと加工後の出力先を指定しておきます。
# 加工する画像があるディレクトリ + ファイル名
image_path = "/Users/xxxx/Desktop/" + "test.jpg"
# 加工後の出力ディレクトリ + ファイル名
output = '/Users/xxxx/Desktop/' + "test_draw.jpg"
画像のフォント設定
描画するテキスト用のフォント設定を行います。挿入テキスト(text
)、使用するフォントのファイルパス(font_path
)、フォントサイズ(font_size
)、フォントカラー(font_color
)、テキストの挿入位置座標(axis
)をそれぞれ指定します。
コード
# 挿入テキスト
text = "挿入テキスト挿入テキスト"
# フォントパス
font_path = "/Users/ユーザー名/Library/Fonts/RictyDiminished-Regular.ttf"
# フォントサイズ
font_size = 80
# フォントカラー
font_color = '#ffffe0'
# 描画位置座標
axis = (600, 450)
【参考】フォントパスの指定方法について
フォントとは、「遊ゴシック」「Arial」「Meiryo UI」などデジタル化した書体を指します。Pillowでお好みのフォントを利用する場合、そのフォント情報を格納したファイル(以下、フォントパスと言及)の指定が必要です。デフォルトで全てのPCにはフォント用のファイルが格納されています。
フォントパスは、WindowsとMac OSで指定方法が異なり、それぞれ次のように指定できます。
Windowsの場合
- C:ドライブ/Windows/Fontsを開く(各種書体に対応したフォントファイルが確認できる)
- お好みのフォントを右クリックし、プロパティを開き、フォントパスを確認する
- 確認したフォントパスをPython上で指定する
Macの場合
- Users/ユーザー名/ライブラリ/Fonts/xxxx.ttfというファイルがあるため、それをPythonで指定する
テキストを画像に描画
前述のテキスト描画設定に基づき、画像内にテキストを挿入します。以下を実行しましょう。
# 画像を開く
img = Image.open(image_path)
# フォント
font = ImageFont.truetype(font_path, font_size)
# 描画
draw = ImageDraw.Draw(img)
# 画像に文字列を描画
draw.text(axis, # 座標
text, # 描画するテキストタイトル
font_color, # フォントの色
font=font, # フォント設定
spacing=4, # テキスト間隔にとるスペース
align='center', # テキストの揃え方(center:中央揃え, left:左揃え, right:右揃え)
anchor='md' # アンカーテキスト
)
# 画像保存
img.save(output)
【参考】Pillowでテキストを画像に描画|Pythonコード全量
ここまで説明したコードを全て以下に示します。
from PIL import Image, ImageDraw, ImageFont
# =====================================================
# 画像入出力設定
# =====================================================
# 加工する画像があるディレクトリ + ファイル名
image_path = "/Users/xxxx/Desktop/" + "test.jpg"
# 加工後の出力ディレクトリ + ファイル名
output = '/Users/xxxx/Desktop/' + "test_draw.jpg"
# =====================================================
# 描画設定
# =====================================================
# 挿入テキスト
text = "挿入テキスト挿入テキスト"
# フォントパス
font_path = "/Users/ユーザー名/Library/Fonts/RictyDiminished-Regular.ttf"
# フォントサイズ
font_size = 80
# フォントカラー
font_color = '#ffffe0'
# 描画位置座標
axis = (600, 450)
# =====================================================
# 描画
# =====================================================
# 画像を開く
img = Image.open(image_path)
# フォント
font = ImageFont.truetype(font_path, font_size)
# 描画
draw = ImageDraw.Draw(img)
# 画像に文字列を描画
draw.text(axis, # 座標
text, # 描画するテキストタイトル
font_color, # フォントの色
font=font, # フォント設定
spacing=4, # テキスト間隔にとるスペース
align='center', # テキストの揃え方(center:中央揃え, left:左揃え, right:右揃え)
anchor='md' # アンカーテキスト
)
# 画像保存
img.save(output)
【参考】Python・OpenCVを用いた画像処理
当サイトでは、PythonのOpenCVライブラリを用いた画像処理ノウハウを多数公開しています。
用途 | 【Python×OpenCV】記事名 |
---|---|
画像変換 | 画像のリサイズ・拡大・縮小 |
画像変換 | 画像の回転・反転・平行移動|アフィン変換 |
画像変換 | 画像の明るさ調節|ガンマ補正 |
画像変換 | グレースケール・HSV・L*a*b|色空間の変換 |
画像変換 | モノクロ(白黒)画像変換|2値化処理 |
画像変換 | ヒストグラムの描画・ヒストグラム均一化処理 |
画像変換 | 画像上にテキスト・図形(直線・長方形・円)を描画 |
画像変換 | 画像の透視変換・遠近法 |
画像変換 | 画像のノイズ除去・平滑化 |
画像変換 | 画像の畳み込み(空間フィルタリング) |
特徴抽出 | エッジの検出方法 |
画像認識や物体検出を学ぶ上でおすすめの教材はこちらをご参考ください。
画像処理・コンピュータビジョンの勉強におすすめ入門本・動画教材7選|OpenCV解析結果をディープラーニングに適用!
「画像処理・コンピュータビジョン分野に興味があり、画像処理のプログラミングスキルを習得したい」「OpenCVを用いた画像解析手法を学びたい」このような方向けにおすすめの教材を紹介します。
最後に
お問い合わせフォーム
上記課題に向けてご気軽にご相談下さい。
お問い合わせはこちら