Python

画像をプロテクト!Pythonでウォーターマークを設定しよう!

2023年11月13日

画像をプロテクト!Pythonでウォーターマークを設定

ウォーターマークとは画像の一部に別の画像やテキストを重ねて表示することです。

画像の著作権を主張したり、自分のブランドやサービスを宣伝したりするために利用されます。

しかし、ウォーターマークを入れる方法は
意外と知られてないかもしれません。

そこで、この記事ではPythonのライブラリを使って
画像にウォーターマークを入れる方法を詳しく解説します。
Pythonを使うと簡単なコードで様々なウォーターマークを作成できます。

画像にウォーターマークを入れることは、画像の著作権やブランディングに役立つだけでなく、画像に個性や印象を加えることもできます。
ぜひ、この記事を参考にして自分だけのウォーターマークを作ってみましょう!

※趣味でAI画像を投稿していますが、Pyhonで一括でウォーターマークを入れるのは
 ものすごく便利です!

画像をウォーターマークとして合成する

画像をウォーターマークとして合成する

画像をウォーターマークとして合成する方法では
ロゴなどの画像をウォーターマークとして元の画像に合成します。

合成する際には、ウォーターマーク画像のサイズや位置、透明度などを調整できます。
この方法のメリットは、ウォーターマーク画像を自由に作成できることです。
デメリットは、ウォーターマーク画像が別途必要になることです。

以下の内容で解説していきます。

画像をウォーターマークとして合成する

  • ウォーターマーク画像の作成
  • サンプルコードと実行結果

ウォーターマーク画像の作成

ウォーターマークとして使用する画像は自分で作成したものやフリー素材のものなどがあります。
画像は以下の点に注意して選びましょう!

・著作権や利用規約に違反しないこと
・元の画像とのバランスやコントラストが良いこと
・ウォーターマークの目的やメッセージが明確であること

サンプルコードと実行結果

サンプルコードを下に記します。

from PIL import Image

# 元の画像を読み込む
original = Image.open("C:/mekatana/original.png")

# ウォーターマーク画像を読み込む
watermark = Image.open("C:/mekatana/watermark.png")

# ウォーターマーク画像をリサイズする
watermark = watermark.resize((200, 200))

# ウォーターマーク画像の透明度を50%にする
watermark.putalpha(128)

# 元の画像にウォーターマーク画像を右下に貼り付ける
original.paste(watermark, (original.width - watermark.width, original.height - watermark.height))

# 合成した画像を表示する
original.show()

# 合成した画像を保存する
original.save("C:/mekatana/watermarked_image.png")

問題なく実行できれば以下のような画像が保存されると思います。
※このプログラムは元画像をウォーターマーク画像として合成しています。

オリジナル画像
オリジナル画像
ウォーターマーク画像
ウォーターマーク画像

以下の順でサンプルコードを解説します。

サンプルコード解説

  • 手順1:PILライブラリからImageモジュールをインポート
  • 手順2:ウォーターマーク画像の読込み
  • 手順3:ウォーターマーク画像のリサイズ
  • 手順4:ウォーターマーク画像の透明度調整
  • 手順5:ウォーターマーク画像の位置調整
  • 手順6:ウォーターマーク画像を表示・保存

手順1:PILライブラリからImageモジュールをインポート

まず最初に、PILライブラリからImageモジュールをインポートしています。

これで画像の読み込みや編集に必要なクラスやメソッドにアクセスできます。

手順2:ウォーターマーク画像の読込み

Image.open()メソッドを使用して、
original = Image.open("C:/mekatana/original.png")で元となる画像を読み込み
watermark = Image.open("C:/mekatana/watermark.png")ではウォーターマーク画像を読み込みます。

手順3:ウォーターマーク画像のリサイズ

resize()メソッドを使用して、watermark = watermark.resize((200, 200))では
ウォーターマーク画像を指定したサイズにリサイズしています。

ここでは幅と高さが200ピクセルに変更しています。

手順4:ウォーターマーク画像の透明度調整

putalpha()メソッドを使用して
watermark.putalpha(128)ではウォーターマーク画像のアルファチャンネル(透明度)を128に設定しています。
※アルファチャンネルが0(完全透明)から255(完全不透明)までの値を取ります。

手順5:ウォーターマーク画像の位置調整

paste()メソッドを使用して
original.paste(watermark, (original.width - watermark.width, original.height - watermark.height))では
元の画像にウォーターマーク画像を右下に貼り付けています。

貼り付ける場所は元の画像の幅からウォーターマーク画像の幅を引いた位置と
元の画像の高さからウォーターマーク画像の高さを引いた位置に設定しています。

手順6:ウォーターマーク画像の表示・保存

show()メソッドを使用して合成した画像を表示することで結果を確認することができます。

さらに、save()メソッドと保存先を指定することで、合成した画像を保存することができます。

たった数行でウォーターマークを画像に貼り付けることが出来ました!

画像に直接テキストを描画する

画像に直接テキストを描画する

画像の上にテキストを書き込むこともできます。

テキストはウォーターマークとしてだけでなく
画像にコメントや説明を付けたり
画像に感想やメッセージを表現したりするためにも利用できます。

早速サンプルコードを解説していきます!

サンプルコードと実行結果

早速をサンプルコードを載せます。

from PIL import Image, ImageDraw, ImageFont

# 元の画像を読み込む
original = Image.open("C:/mekatana/original.png")

# ウォーターマークとして合成するテキスト
text = "mekatana"

# ウォーターマーク画像を作成する
watermark = Image.new("RGBA", original.size, (0, 0, 0, 0))
draw = ImageDraw.Draw(watermark)

# フォントを指定してサイズを指定
font_path = "C:/Windows/Fonts/BASKVILL.TTF"  # フォントのパスを指定
font_size = 70
font = ImageFont.truetype(font_path, font_size)

# テキストのサイズを取得
text_width, text_height = draw.textsize(text, font)

# テキストを画像に描画(右下に配置)
draw.text((original.width - text_width - 10, original.height - text_height - 10), text, font=font, fill=(0, 0, 0, 128))

# 元の画像にテキストを貼り付ける
original.paste(watermark, (0, 0), watermark)

# 合成した画像を表示する
original.show()

# 合成した画像を保存する
original.save("C:/mekatana/watermarked_image.png")

問題なく実行できれば下のような画像が出力されると思います。

ウォーターマーク-テキスト画像
ウォーターマーク画像

サンプルコード解説

  • 手順1:ウォーターマークとして合成するテキスト
  • 手順2:ウォーターマーク画像を作成
  • 手順3:フォントとサイズを指定
  • 手順4:テキストを画像に描画
  • 手順5:元の画像にテキストを貼り付ける

手順1:ウォーターマークとして合成するテキスト

合成するテキストを指定しています。
この例では mekatanaがテキストとして使用されます。

手順2:ウォーターマーク画像を作成

watermark = Image.new("RGBA", original.size, (0, 0, 0, 0))では新しい透明な画像を作成しています。

Image.new メソッドは新しい画像を生成するための Pillow ライブラリのメソッドです。
このメソッドにはいくつかのパラメータがあります。

RGBA: 画像のモードを指定します。ここでは「RGBA」を指定しています。
RGBAモードは赤(Red)、緑(Green)、青(Blue)の各色成分に加えて
アルファ(透明度)成分を含む画像モードです。
RGBAモードの画像は透明度を持つことができます。

original.size: 新しい画像のサイズを元の画像 (original) と同じに指定しています。
これにより、合成するためのウォーターマーク画像が元の画像と同じ寸法になります。

(0, 0, 0, 0): 新しい画像の初期色を指定しています。
ここでは (0, 0, 0, 0) を指定しています。
これは RGBA モードで、各成分が 0 でアルファ成分が 0 となっています。
これにより、完全に透明な初期画像が生成されます。

ImageDraw.Drawでは描画するためのオブジェクトを作成しています。

手順3:フォントとサイズを指定

使用するフォントのパスとサイズを指定しています。
このコードでは BASKVILL.TTF というフォントを使用し
サイズは70です。

手順4:テキストを画像に描画

draw.text()メソッドを使用して指定したテキストを画像上に描画しています。
テキストは右下に配置され、テキストの色は (0, 0, 0, 128) で、ここでは半透明の黒色になります。

手順5:元の画像にテキストを貼り付ける

original.paste(watermark, (0, 0), watermark)では元の画像に作成したテキストを右下に合成しています。

まとめ

まとめ

この記事ではPythonを使って、画像にウォーターマークを入れる方法を詳しく解説しました。
ウォーターマークは、画像の著作権を主張したり、自分のブランドやサービスを宣伝したりするために利用できます。

ウォーターマークを入れる方法は、以下の2種類を紹介しました。

・画像をウォーターマークとして合成する
・画像に直接テキストを描画する

それぞれの方法について、ウォーターマーク画像の作成方法やリサイズ方法や位置調整方法や透明度調整方法などを説明しました。

また、サンプルコードと実行結果も示したので、これらの方法をマスターすれば
自分のオリジナルなウォーターマークを作ることができます。

画像にウォーターマークを入れることは、画像の著作権やブランディングに役立つだけでなく、画像に個性や印象を加えることもできます。

ぜひ、この記事を参考にして、自分だけのウォーターマークを作ってみてください。

今回は以上です!

  • この記事を書いた人

メカタナ

副業ブロガー【経歴】関西出身▶︎理系国立大学院▶︎東証プライム上場企業メーカー開発職▶︎妻と息子1人と暮らしています。▶︎メカタナブログを開設⇒仕事や日常で役立つPythonプログラムを紹介していきます!

-Python