Pythonを使用して簡単にデジタルはんこを作成する方法【Pillowを使った画像生成 電子検印】

Python
この記事は約4分で読めます。
スポンサーリンク

今回は、ちょっと会社でデジタルはんこが必要になり、Pythonで作れないかなと挑戦してみたので、その作成したものをシェアしようと思います。

使用ライブラリ

まずは、今回必要となるライブラリです。

  • Pillow

Pillowは、Pythonでは有名な画像処理ライブラリでとなります。
今回のライブラリはすでにインストール済みですので、すいませんが、画像はありません。
インストールには以下のコマンドを入力することでインストール可能です。

pip install Pillow

プログラムと実行結果

ではいつも通りプログラムの全体です。

from PIL import Image, ImageDraw, ImageFont
import os
import time

def main():
    base_W, base_H = (320,320)
    moji_Upper = "部署X"
    moji_Lower = "氏 名"
    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)  # 円を描画
    
    #はんこ上部の文字を入れる
    adjust = 9
    hight = (( (base_H-yohaku*2) / 3 ) * 1) + yohaku
    d.line([(0+yohaku+adjust,hight),(base_W-yohaku-adjust,hight)],fill='red',width=6) # よこ線を入れる
    
    fontpath = "C:\Windows\Fonts\msgothic.ttc"
    font = ImageFont.truetype(fontpath, 60)
    moji_W, moji_H = d.textsize(moji_Upper, font=font)
    moji_W = (base_W/2) - (moji_W/2)
    moji_H = hight - moji_H - yohaku
    d.text(( moji_W,moji_H), moji_Upper, font=font, fill='red')
        
    hight = (( (base_H-yohaku*2) / 3 ) * 2) + yohaku
    d.line([(0+yohaku+adjust,hight),(base_W-yohaku-adjust,hight)],fill='red',width=6) # よこ線を入れる
    
    #日付を入れる
    now = time.localtime()
    date = time.strftime('%y/%m/%d', now) 
    
    fontpath = "C:\Windows\Fonts\msgothic.ttc"
    font = ImageFont.truetype(fontpath, 60)
    moji_W, moji_H = d.textsize(date, font=font)
    moji_W = (base_W/2) - (moji_W/2)
    moji_H = (base_H/2) - (moji_H/2)
    d.text(( moji_W,moji_H), date, font=font, fill='red')
    
    
    #はんこ下部の文字を入れる
    fontpath = "C:\Windows\Fonts\msgothic.ttc"
    font = ImageFont.truetype(fontpath, 60)
    moji_W, moji_H = d.textsize(moji_Lower, font=font)
    moji_W = (base_W/2) - (moji_W/2)
    moji_H = hight + yohaku
    d.text(( moji_W,moji_H), moji_Lower, font=font, fill='red')
    
    image.save(os.getcwd() + '\sample.png')
    

if __name__ == '__main__':
    main()

実行結果として以下のようなsample.pngという名前のpngファイルが生成されます。

続いてプログラムの解説ですが、解説は次ページにて記載します。

スポンサーリンク

コメント

タイトルとURLをコピーしました