Pillowは、Pythonで画像処理を行うための強力なライブラリーです。Pillowは、Python Imaging Library(PIL)の後継として開発されており、画像の読み込み、編集、保存など、多岐にわたる画像処理機能を提供します。以下に、Pillowの概要とその実用例を説明します。
Pillowの特徴
多様な画像フォーマットのサポート
Pillowは、JPEG、PNG、BMP、GIFなど、さまざまな画像フォーマットをサポートしています。これにより、異なる形式の画像ファイルを簡単に処理できます。
豊富な画像処理機能
画像のリサイズ、回転、フィルタ適用、描画など、幅広い画像処理機能を備えています。これにより、画像編集や解析が効率的に行えます。
シンプルなAPI
Pillowは直感的で使いやすいAPIを提供しており、複雑な画像処理タスクを簡潔に記述することができます。
例題1: 画像の読み込みと表示
まず、基本的な操作として、画像を読み込み、表示する方法を紹介します。
インストール
pip install pillow
from PIL import Image
# 画像の読み込み
image = Image.open('example.jpg')
# 画像の表示
image.show()
結果
このコードでは、Image.open
関数を使用して画像ファイルを読み込み、image.show
メソッドで画像を表示しています。
例題2: 画像のリサイズと保存
次に、画像のリサイズと保存を行う例です。
from PIL import Image
# 画像の読み込み
image = Image.open('example.jpg')
# 画像のリサイズ
resized_image = image.resize((200, 200))
# リサイズ後の画像を表示
resized_image.show()
# リサイズ後の画像を保存
resized_image.save('example_resized.jpg')
結果
この例では、image.resize
メソッドを使用して画像を200×200ピクセルにリサイズし、resized_image.save
メソッドでリサイズ後の画像を保存しています。
例題3: 画像の回転とフィルタ適用
画像を回転させ、フィルタを適用する例です。
from PIL import Image, ImageFilter
# 画像の読み込み
image = Image.open('example.jpg')
# 画像の回転
rotated_image = image.rotate(45)
# フィルタの適用(ぼかし)
filtered_image = rotated_image.filter(ImageFilter.BLUR)
# 回転およびフィルタ適用後の画像を表示
filtered_image.show()
# 回転およびフィルタ適用後の画像を保存
filtered_image.save('example_rotated_blurred.jpg')
結果
この例では、image.rotate
メソッドで画像を45度回転させ、rotated_image.filter
メソッドでぼかしフィルタを適用しています。
例題4: テキストの描画
画像にテキストを描画する例です。
from PIL import Image, ImageDraw, ImageFont
# 画像の読み込み
image = Image.open('example.jpg')
# 描画オブジェクトの作成
draw = ImageDraw.Draw(image)
# フォントの設定(システムフォントのパスを指定)
font = ImageFont.truetype('/usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttf', 40)
# テキストの描画
draw.text((50, 50), 'Hello, World!', font=font, fill='red')
# テキストを描画した画像の表示
image.show()
# テキストを描画した画像の保存
image.save('example_with_text.jpg')
注意)fontのpathは自分の環境で書き換えてください。
結果
この例では、ImageDraw.Draw
オブジェクトを使用して画像上にテキストを描画し、draw.text
メソッドで文字を追加しています。ImageFont.truetype
を用いてフォントを設定し、文字のスタイルをカスタマイズしています。
例題5: 複数の画像の結合
複数の画像を結合する例です。
from PIL import Image
# 画像の読み込み
image1 = Image.open('example1.jpg')
image2 = Image.open('example2.jpg')
# 新しい画像(結合後の画像)の作成
combined_image = Image.new('RGB', (image1.width + image2.width, image1.height))
# 画像の結合
combined_image.paste(image1, (0, 0))
combined_image.paste(image2, (image1.width, 0))
# 結合後の画像の表示
combined_image.show()
# 結合後の画像の保存
combined_image.save('example_combined.jpg')
結果
この例では、Image.new
メソッドを使用して新しい画像キャンバスを作成し、paste
メソッドを使って2つの画像を結合しています。
結論
Pillowは、Pythonでの画像処理を強力かつ柔軟に行うためのライブラリーです。画像の読み込み、編集、保存など、多様な操作を簡単に実現できます。リサイズ、回転、フィルタ適用、テキスト描画、画像の結合など、さまざまな画像処理タスクを効率的にこなすことができます。Pillowを活用することで、画像解析やビジュアルデータの処理を高度に行うことができ、研究や開発における画像処理のニーズを満たす強力なツールとなるでしょう。