Pythonで利用できる画像ライブラリ[Pillow(PIL)]で画像に文字や線を描画して電子印鑑(ハンコ)する手順を備忘録的に投稿しておきます。
Pillow(PIL)
Pythonで利用できるPillowは、画像に関する操作を行うライブラリで他のライブラリをインストールした際に、セットアップされている場合があります。
VSCodeの[ターミナル]画面などから次のコマンドで確認することができます。
pip show pillow
インストールされている場合にはバージョンなどの情報が表示されます。
インストールされていない場合には pip コマンドでインストールをしておきます。
pip install pillow
画像に枠を描画する手順
VSCodeを使って、Pythonで画像に円を描画するには次の手順で行います。
1. VSCodeを起動しプロジェクト用のフォルダーを内に[drawcircle.py]ファイルを作成して次のコードを追加します。
from PIL import Image, ImageDraw, ImageFont
base_W, base_H = (320,320)
yohaku = 10
image = Image.new('RGBA', (base_W, base_H), 'white')
d = ImageDraw.Draw(image)
d.ellipse([(yohaku, yohaku), (base_W - yohaku, base_H - yohaku)], outline='red', width=6)
image.save('C:\Datas\Python\drawtext\output\sample.png')
2. 画像を保存するための[output]フォルダーを新しく作成します。
3. VSCodeの[ターミナル]画面で次のコマンドを実行します。
python drawcircle.py
4.[output]フォルダーに画像が保存されます。
赤色の枠線を描画することができました。
画像に文字を描画する手順
Pythonで画像に文字を描画するには次の手順で行います。
1. 先ほどの[drawcircle.py]ファイルを次のように修正します。
from PIL import Image, ImageDraw, ImageFont
base_W, base_H = (320,320)
moji = "印"
yohaku = 10
image = Image.new('RGBA', (base_W, base_H), 'white')
d = ImageDraw.Draw(image)
d.ellipse([(yohaku, yohaku), (base_W - yohaku, base_H - yohaku)], outline='red', width=6)
fontpath = "C:\Windows\Fonts\Meiryo.ttc"
font = ImageFont.truetype(fontpath, 200)
moji_W, moji_H = d.textsize(moji, font=font)
d.text(((base_W - moji_W)/2,((base_H - moji_H)/2) - (moji_H - moji_W)), moji, font=font, fill='red')
image.save('C:\Datas\Python\drawtext\output\sample.png')
2. VSCodeの[ターミナル]画面で次のコマンドを実行します。
python drawcircle.py
3.[output]フォルダーに画像が保存されます。
赤色の枠線内に文字を描画することができました。
画像を背景透過にする手順
画像の背景を透明(背景透過)にしてみます。Pythonで背景が透明な画像を作成するには次の手順で行います。
1. 先ほどの[drawcircle.py]ファイルを次のように修正します。
from PIL import Image, ImageDraw, ImageFont
base_W, base_H = (320,320)
moji = "印"
yohaku = 10
image = Image.new('RGBA', (base_W, base_H), 'white')
image.putalpha(0)
d = ImageDraw.Draw(image)
d.ellipse([(yohaku, yohaku), (base_W - yohaku, base_H - yohaku)], outline='red', width=6)
fontpath = "C:\Windows\Fonts\Meiryo.ttc"
font = ImageFont.truetype(fontpath, 200)
moji_W, moji_H = d.textsize(moji, font=font)
d.text(((base_W - moji_W)/2,((base_H - moji_H)/2) - (moji_H - moji_W)), moji, font=font, fill='red')
image.save('C:\Datas\Python\drawtext\output\sample.png')
2. VSCodeの[ターミナル]画面で次のコマンドを実行します。
python drawcircle.py
3.[output]フォルダーに画像が保存されます。
透明な背景に赤色の枠と文字を描画することができました。
まとめ
Pythonで利用できる[Pillow]を利用することで簡単にハンコのような(赤枠に文字)を描画した画像を作成することができます。
今回はWindowsの標準書体で、1文字なのでハンコに見えませんが書体や文字の縦横比を変更することで印面に見えるようになります。
次回は文字の縦横比を変更する手順を紹介していきます。
スポンサーリンク
最後までご覧いただき、ありがとうございます。