月花凪(TukikaNagi)

冷蔵庫の中を見て献立を立てる主婦の思考

【Python】Pillowを使って複数の写真にコピーライトを一括で追加する方法

コピーライトの表記がなくても著作権は認められますが、盗用を防ぐべくTwitterやブログに投稿する写真にはコピーライトをいれることにしました

そこで、画像編集ソフトを使ってもいいのですが、練習もかねてPythonで画像に文字を入れるものを作成したので公開します

Pythonの環境構築やPillowのインストール方法はここでは触れません

 全文

from PIL import ImageImageDrawImageFont
import glob
import os
folder = "D:\\文字入れサンプル用" #フォルダを指定する
new = "文字入れサンプル完成" #新規フォルダ名
#フォルダ内のすべてのJPGファイルを取得
imgList = glob.globfolder + "\\*.jpg")
#Dドライブ内に新規フォルダを作成する
path = "D:\\" + new
os.mkdir(path)
text = 'Sample '             # 画像に追加する文
#imgListの画像にコピーライトを付与して指定フォルダに保存する
for n,l in enumerate(imgList):
    img = Image.open(l)
    imagesize = img.size        
    draw = ImageDraw.Draw(img)  
 # フォントを指定、サイズ、ピクセル単位
    font = ImageFont.truetype("D:\\font\\Audrey-Normal.otf"200
    size = font.getsize(text)
    draw.text((imagesize[0] - size[0], imagesize[1] - size[1]), textfont=fontfill='#FFF')
    img.savepath + "\\file{}.jpg".format(n+1), 'JPEG'quality=100optimize=True)

print("終了")

コードの順番通り概要を説明すると

1.指定したフォルダ内のJPEGファイルを読み取る

2.新規フォルダを作成する

3.読み取ったJPEGファイルに任意の文字を上書きする

4.新規フォルダに保存する

 

3〜4を繰り返すことで指定したフォルダ内全ての写真にコピーライトを付けていきます

フォントは予め任意のフォルダに用意しておきます

fill=‘#FFF’で文字の色を指定します。#FFFは白です

4の保存では、JPEG画像なので画質の変更ができ、100なら元画像と同じ、80なら元画像から80%の画質になります

文字の大きさはpx単位で指定するので元画像のpxによって変更する必要があるので注意が必要です

 

サンプル

この画像(1840×1232(px))に文字の大きさを200pxに指定して文字をいれます

f:id:Wilhelog:20210619150232j:plain

Nikon F2, Ai Nikkor 50mm f1.4

実行結果がこちらです

f:id:Wilhelog:20210619152258j:plain

 

参考

Python Pillow - 画像に重ねて文字を描く - PythonとRPAで遊ぶ

【加工例11選】Pythonで画像を一括処理できるPillowの使い方 – Valmore

ゼロからはじめるPython(39) Pythonで100枚の画像にコピーライトを書き込もう | TECH+

 

 

 

おすすめブログ

鏡月さんのブログ