【コピペ可】画像にアカウント名の透かしを"リサイズして"自動で入れるPythonコード
はじめまして!最近、Stable Diffusionにハマったので、Hibiki@aiLadyというTwitterアカウントで人体錬成した女性の画像を発信しています。
情報交換など興味津々なので、是非フォロー・リプライ頂けると嬉しいです!
さて、先日Recl_AIさんの記事↓が大変参考になった(ありがとうございます!)のですが、
このコードのままだと、”透かし”のサイズは固定なので、以下のように画像のサイズが小さいと”透かし”が大きくなりすぎたり、逆にサイズが大きいと”透かし”が小さくなりすぎたりするのが気になってきました。
そこで「”透かし”は常に画像の横幅の3/5(変更可)にリサイズしてから入れる」ために微変更しました!もしよかったら使ってやってください。
※変更したのは引用元の「insert_watermark.py」ファイルのみです。それ以外はRecl_AIさんの記事を参照ください。
import os
import sys
from PIL import Image
def is_image_file(filename):
IMAGE_EXTENSIONS = ['.jpg', '.jpeg', '.png', '.bmp', '.tiff', '.gif']
return any(filename.lower().endswith(ext) for ext in IMAGE_EXTENSIONS)
abspath = os.path.abspath(sys.argv[0])
dname = os.path.dirname(abspath)
os.chdir(dname)
# watermarkedフォルダを一度すべて削除する
for filename in os.listdir("./watermarked/"):
file_path = os.path.join("./watermarked/", filename)
try:
if os.path.isfile(file_path) or os.path.islink(file_path):
os.unlink(file_path)
elif os.path.isdir(file_path):
os.rmdir(file_path)
except Exception as e:
print(f"Failed to delete {file_path}. Reason: {e}")
overlay_image_file = "./watermark.png"
# originalフォルダ内の画像分だけループ
for filename in os.listdir("./original/"):
if not is_image_file(filename):
continue
# 元画像の下の中央に透かしを入れる
main_image_file = os.path.join("./original/", filename)
output_image_file = "./watermarked/watermarked_" + os.path.basename(main_image_file)
main_image = Image.open(main_image_file)
overlay_image = Image.open(overlay_image_file)
# リサイズする大きさを決める
overlay_width = main_image.width // 5 * 3 # 大きさを変えたいときはここを変える。←は「画像の3/5」にリサイズする
overlay_height = int(overlay_image.height * (overlay_width / overlay_image.width))
# 画像をリサイズする
overlay_image_resized = overlay_image.resize((overlay_width, overlay_height))
# 画像を配置する
x = int((main_image.width - overlay_width) - 10)
y = main_image.height - overlay_height - 10
main_image.paste(overlay_image_resized, (x, y), overlay_image_resized)
main_image.save(output_image_file)
※繰り返しですが、変更したのは引用元の「insert_watermark.py」ファイルのみです。それ以外はRecl_AIさんの記事を参照ください。
それでは!Twitterもフォローお願いしマス。情報交換しましょう~
この記事が気に入ったらサポートをしてみませんか?