1. 画像にテキストを追加する
Pillowで画像にテキストを追加するには、ImageDraw
モジュールを使用するよ。このモジュールのtext()
メソッドを使って、指定した座標にテキストを表示する。
テキストをシンプルに追加
from PIL import ImageDraw, ImageFont
# 描画オブジェクトを作成
draw = ImageDraw.Draw(image)
# 画像にテキストを追加
text = "テキスト例"
draw.text((50, 50), text, fill="white")
# テキスト付き画像を保存
image.save("text_example.jpg")
この例では、テキスト"テキスト例"
が座標(50, 50)
に追加されるよ。fill
パラメータはテキストの色を設定する。それは文字列(例えば"white"
や"black"
)やRGB形式(例えば(255, 255, 255)
)で指定できる。
フォントのカスタマイズ
デフォルトではPillowは基本フォントを使う。他のフォントとフォントサイズを指定するにはImageFont.truetype()
を使う。システム上でフォントファイルがアクセス可能か確認してね。
# フォントを読み込み
font = ImageFont.truetype("arial.ttf", 36)
# カスタムフォントでテキストを追加
draw.text((50, 100), text, font=font, fill="yellow")
image.save("text_custom_font_example.jpg")
ここでは、フォントarial.ttf
をサイズ36ピクセルで使用しているよ。必要なフォントがシステムにない場合は、それをダウンロードしてファイルのパスを指定しよう。
2. ウォーターマークを追加する
ウォーターマークは、画像にコピー防止のために半透明のテキストや画像を重ねることだよ。例えばロゴや作者情報を追加するときに使える。Pillowを使えば、簡単なテキストウォーターマークを作成できる。
テキストウォーターマーク
# 描画オブジェクトを作成
draw = ImageDraw.Draw(image)
# ウォーターマーク用テキストとフォント
watermark_text = "© 2023 My Company"
font = ImageFont.truetype("arial.ttf", 24)
# ウォーターマークの位置を決定
width, height = image.size
text_width, text_height = draw.textsize(watermark_text, font=font)
x = width - text_width - 10
y = height - text_height - 10
# 右下隅にウォーターマークを追加
draw.text((x, y), watermark_text, font=font, fill=(255, 255, 255, 128))
image.save("watermarked_example.jpg")
この例では、ウォーターマークが画像の右下隅に追加されるよ。x
とy
は画像の端から少し内側にオフセットして計算している。
3. グラフィック要素の追加
テキストだけでなく、Pillowを使えば線、四角形、円、楕円などの基本的なグラフィック要素も描画できるよ。例えば枠線やエリアの強調や幾何学的形状を作ることができる。
線を描く
線を描くにはline()
メソッドを使うよ。このメソッドは線の開始と終了の座標を受け取る。
# 左上から右下へ線を描く
draw.line((0, 0, width, height), fill="red", width=5)
image.save("line_example.jpg")
このコードは、画像の左上隅から右下隅まで赤い線を描画する。
四角形を描く
四角形はrectangle()
メソッドを使って描画できるよ。このメソッドには左上と右下の角の座標を渡す。
# 四角形を描画する
draw.rectangle((50, 50, 200, 200), outline="blue", width=3)
image.save("rectangle_example.jpg")
ここでは、青い枠線で幅3ピクセルの四角形を描画しているよ。fill
パラメータを使えば、四角形を色で塗りつぶすこともできる。
円と楕円を描く
円や楕円を描くにはellipse()
メソッドを使うよ。円を描くには、幅と高さに同じ値を指定するといい。
# 円を描く
draw.ellipse((150, 150, 250, 250), outline="green", width=4)
image.save("circle_example.jpg")
この例では、中心が(200, 200)
の円を描画しているよ。幅と高さを異なる値にすると楕円になる。
多角形を描く
多角形を描くにはpolygon()
メソッドを使う。このメソッドは図形の頂点の座標を受け取るよ。
# 三角形を描く
draw.polygon([(100, 100), (150, 50), (200, 100)], outline="purple", fill="orange")
image.save("polygon_example.jpg")
このコードはオレンジの塗りつぶしと紫の枠線を持つ三角形を描画するよ。頂点の座標を渡せば、どんな形状でも作れるよ。
4. サンプル
テキストとグラフィックを組み合わせた例
ここまでのすべてを統合して、テキスト、ウォーターマーク、グラフィック要素を含む画像を作成しよう。
from PIL import Image, ImageDraw, ImageFont
# 画像を読み込む
image = Image.open("example.jpg")
draw = ImageDraw.Draw(image)
# テキストを追加
font = ImageFont.truetype("arial.ttf", 36)
draw.text((50, 50), "デモテキスト", font=font, fill="yellow")
# 右下隅にウォーターマークを追加
watermark_text = "© 2023 My Company"
font_watermark = ImageFont.truetype("arial.ttf", 24)
width, height = image.size
text_width, text_height = draw.textsize(watermark_text, font=font_watermark)
x = width - text_width - 10
y = height - text_height - 10
draw.text((x, y), watermark_text, font=font_watermark, fill=(255, 255, 255, 128))
# 線、四角形、円を描画
draw.line((0, 0, width, height), fill="red", width=5)
draw.rectangle((50, 50, 200, 200), outline="blue", width=3)
draw.ellipse((150, 150, 250, 250), outline="green", width=4)
# 結果を保存
image.save("final_composition_example.jpg")
この例は、テキスト、ウォーターマーク、いくつかのグラフィック要素(線、四角形、円)を含む画像を作成する。プレゼンテーションやブログ、プロフェッショナルなイメージ作成などに使えるよ。
実践的な応用
- 画像のマーキングと保護: ウォーターマークは画像の無断使用を防ぎ、テキストは作者や会社の情報を追加するのに役立つ。
- ソーシャルメディア用画像準備: テキストやグラフィックを追加することで、公開用の画像に情報を付加できる。
- インフォグラフィックやデータ視覚化: 線や図形などのグラフィック要素を使用することで、シンプルなグラフやチャートを作成できるので、Pillowはインフォグラフィックを作るのに便利だよ。
GO TO FULL VERSION