【Python】Pillowを使って複数の写真にコピーライトを一括で追加する方法
コピーライトの表記がなくても著作権は認められますが、盗用を防ぐべくTwitterやブログに投稿する写真にはコピーライトをいれることにしました
そこで、画像編集ソフトを使ってもいいのですが、練習もかねてPythonで画像に文字を入れるものを作成したので公開します
Pythonの環境構築やPillowのインストール方法はここでは触れません
全文
from PIL import Image, ImageDraw, ImageFont
import glob
import os
folder = "D:\\文字入れサンプル用" #フォルダを指定する
new = "文字入れサンプル完成" #新規フォルダ名
#フォルダ内のすべてのJPGファイルを取得
imgList = glob.glob( folder + "\\*.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]), text, font=font, fill='#FFF')
img.save( path + "\\file{}.jpg".format(n+1), 'JPEG', quality=100, optimize=True)
print("終了")
コードの順番通り概要を説明すると
1.指定したフォルダ内のJPEGファイルを読み取る
2.新規フォルダを作成する
3.読み取ったJPEGファイルに任意の文字を上書きする
4.新規フォルダに保存する
3〜4を繰り返すことで指定したフォルダ内全ての写真にコピーライトを付けていきます
フォントは予め任意のフォルダに用意しておきます
fill=‘#FFF’で文字の色を指定します。#FFFは白です
4の保存では、JPEG画像なので画質の変更ができ、100なら元画像と同じ、80なら元画像から80%の画質になります
文字の大きさはpx単位で指定するので元画像のpxによって変更する必要があるので注意が必要です
サンプル
この画像(1840×1232(px))に文字の大きさを200pxに指定して文字をいれます
実行結果がこちらです
参考
Python Pillow - 画像に重ねて文字を描く - PythonとRPAで遊ぶ
【加工例11選】Pythonで画像を一括処理できるPillowの使い方 – Valmore
ゼロからはじめるPython(39) Pythonで100枚の画像にコピーライトを書き込もう | TECH+