Python
は多くの画像処理ライブラリを提供していますが、その中でもPillow
は非常に人気の高いライブラリです。Pillowを使用することで、簡単に画像の読み込み、編集、保存を行うことができ、リサイズや回転、フィルタ適用などの基本的な画像操作を直感的に行えます。本記事では、Pillowライブラリを使った基本的な画像処理の方法について紹介します。
Pillowライブラリとは?
Pillow
は、Python
の画像処理ライブラリであるPIL
(Python
Imaging Library)の後継プロジェクトです。Pillowを使うと、画像の操作が簡単になり、特に画像ファイルの読み込み、保存、加工がスムーズに行えます。例えば、次のような操作が可能です。
- 画像の読み込みと保存
- 画像のリサイズやトリミング
- 画像の回転や反転
- フィルタやエフェクトの適用 Pillowは多くの画像フォーマット(JPEG、PNG、GIF、BMPなど)をサポートしています。
Pillowのインストール
Pillowを使うためには、まずライブラリをインストールする必要があります。以下のコマンドでインストールできます。
pip install pillow
インストールが完了したら、さっそく基本的な画像操作を行ってみましょう。
画像の読み込みと保存
Pillowを使って画像を読み込むのは非常に簡単です。Image.open()
メソッドを使って画像を開き、編集した後にsave()
メソッドで保存することができます。
from PIL import Image
# 画像を読み込む
image = Image.open("example.jpg")
# 画像の情報を表示
print(image.format, image.size, image.mode)
# 画像を保存する
image.save("output.png")
このコードでは、JPEG形式の画像を読み込み、PNG形式で保存しています。また、画像のフォーマット、サイズ、色のモードも確認できます。
画像のリサイズ
画像のサイズを変更することは、多くの画像処理タスクでよく行われる操作です。resize()
メソッドを使えば、簡単に画像をリサイズできます。
# 画像のリサイズ
resized_image = image.resize((800, 600))
resized_image.save("resized_output.png")
上記のコードでは、画像のサイズを800x600ピクセルに変更し、新しい画像として保存しています。元の画像のアスペクト比を保持したい場合は、次のように比率を計算することもできます。
# 元のアスペクト比を保ってリサイズ
new_width = 800
ratio = new_width / image.width
new_height = int(image.height * ratio)
resized_image = image.resize((new_width, new_height))
resized_image.save("resized_aspect_output.png")
画像の回転
rotate()
メソッドを使用すると、画像を指定した角度で回転させることができます。
# 画像を90度回転
rotated_image = image.rotate(90)
rotated_image.save("rotated_output.png")
また、角度をマイナスにすると反時計回りに回転します。
画像のトリミング(切り抜き)
画像の特定の部分を切り抜くには、crop()
メソッドを使用します。このメソッドでは、トリミングする領域を指定します。
# 左上から右下にかけての領域をトリミング
cropped_image = image.crop((100, 100, 400, 400))
cropped_image.save("cropped_output.png")
crop()
メソッドの引数には、(左, 上, 右, 下)の座標をタプルで指定します。これにより、指定した範囲を切り抜いた新しい画像を生成できます。
画像のフィルタ適用
Pillowでは、画像にフィルタを適用することも簡単です。たとえば、画像をぼかすにはfilter()
メソッドを使い、ImageFilter
モジュールのフィルタを指定します。
from PIL import ImageFilter
# 画像をぼかす
blurred_image = image.filter(ImageFilter.BLUR)
blurred_image.save("blurred_output.png")
他にもさまざまなフィルタが用意されています。
ImageFilter.CONTOUR
:輪郭を抽出ImageFilter.DETAIL
:ディテールを強調ImageFilter.SHARPEN
:画像をシャープに
# 画像にシャープフィルタを適用
sharpened_image = image.filter(ImageFilter.SHARPEN)
sharpened_image.save("sharpened_output.png")
画像の変換(カラー/グレースケール)
画像をグレースケールや他のカラーモードに変換するには、convert()
メソッドを使用します。
# 画像をグレースケールに変換
grayscale_image = image.convert("L")
grayscale_image.save("grayscale_output.png")
"L"
はグレースケールを表し、他にも"RGB"
や"RGBA"
などのモードに変換することができます。
複数画像の結合
Pillowを使って複数の画像を結合することも可能です。たとえば、横に画像を並べて結合するには、new()
メソッドで新しい画像を作成し、paste()
メソッドで画像を貼り付けます。
# 2つの画像を横に結合する
image1 = Image.open("image1.jpg")
image2 = Image.open("image2.jpg")
# 新しい空の画像を作成(横に並べるための幅を計算)
combined_width = image1.width + image2.width
combined_image = Image.new("RGB", (combined_width, image1.height))
# 画像を貼り付ける
combined_image.paste(image1, (0, 0))
combined_image.paste(image2, (image1.width, 0))
# 保存
combined_image.save("combined_output.jpg")
まとめ
Python
のPillow
ライブラリを使えば、シンプルな画像処理を簡単に行うことができます。本記事では、画像の読み込みから保存、リサイズ、回転、フィルタ適用、複数画像の結合など、基本的な画像操作を紹介しました。Pillowの基本的な機能を活用して、画像編集や加工を効率的に進められるようになるでしょう。