(1時間4,000円の伴走型ビデオチャット指導も受付中!)
Pythonで画像を自在に操る!画像処理ライブラリ「Pillow」完全ガイド
![]()
【Yuki】
Hirokiくん、こんにちは。今日はPythonで画像処理を行う際に欠かせないライブラリ、「Pillow(PIL)」についてお話ししようと思います。画像のリサイズや加工を自動化できると、作業の効率がとても上がるんですよ。
![]()
【Hiroki】
Yukiさん、よろしくお願いします!画像処理って難しそうなイメージがありますが、Pythonで簡単にできるものなんですか?
![]()
【Yuki】
ええ、大丈夫ですよ。Pillowはもともと「PIL (Python Imaging Library)」という歴史あるライブラリから派生したもので、初心者の方でも直感的に扱えるように設計されています。一つひとつのコードはシンプルなので、一緒に見ていきましょうね。
Pillowのインストール
![]()
【Yuki】
まずは、Pillowを使えるように準備しましょう。標準ライブラリではないので、pipを使ってインストールする必要があります。ターミナルやコマンドプロンプトで以下のコマンドを入力してみてください。
pip install Pillow
![]()
【Hiroki】
インストールできました!これで準備完了ですね。
![]()
【Yuki】
はい。プログラムの中で使うときは、from PIL import Imageという形でインポートするのが一般的です。名前が「Pillow」なのにインポートする名前が「PIL」なのは、昔のライブラリとの互換性を保つためなんですよ。
画像の読み込みと基本情報の取得
![]()
【Yuki】
まずは、画像を開いてその情報を表示してみましょう。基本的な使い方はこうなります。
from PIL import Image
# 画像ファイルを開く
try:
img = Image.open('sample.jpg')
# 画像の情報を表示
print(f"フォーマット: {img.format}")
print(f"サイズ: {img.size}") # (幅, 高さ) のタプル
print(f"モード: {img.mode}") # RGB, RGBA, L(白黒)など
# 画像を画面に表示(確認用)
img.show()
except FileNotFoundError:
print("指定した画像ファイルが見つかりませんでした...")
![]()
【Hiroki】
img.sizeで幅と高さが分かるんですね。img.modeの「RGB」というのは何ですか?
![]()
【Yuki】
それは、色の表現形式のことです。「RGB」は赤・緑・青の三原色で構成されていることを示しています。透明度を含む画像の場合は「RGBA」になったりしますね。こうした情報の取得は、後の処理でサイズを調整するときにとても大切になると思います。
画像のリサイズとリサンプリング
![]()
【Yuki】
次に、画像を指定した大きさに変更する「リサイズ」を試してみましょう。SNSに投稿したり、Webサイトに載せたりするときによく使われる機能です。
# サイズを指定してリサイズ (幅, 高さ)
resized_img = img.resize((400, 300))
# 縦横比を維持したままリサイズ(サムネイル作成)
img.thumbnail((200, 200))
# 保存
resized_img.save('resized_sample.png')
![]()
【Hiroki】
resizeとthumbnailの使い分けはどうすればいいんでしょうか?
![]()
【Yuki】
resizeは指定したサイズに強制的に変更するため、元の画像と比率が違うと少し伸び縮みしてしまうかもしれません。一方で、thumbnailは縦横比を維持したまま、指定した枠内に収まるように計算してくれるので、写真を扱うときは便利ですよ。
画像の回転と反転
![]()
【Yuki】
画像の向きを変えるのも簡単です。
# 90度回転
rotated_img = img.rotate(90)
# 左右反転
flipped_img = img.transpose(Image.FLIP_LEFT_RIGHT)
# 上下反転
top_bottom_flipped = img.transpose(Image.FLIP_TOP_BOTTOM)
![]()
【Hiroki】
スマホで撮った写真が横向きになっちゃったときとかに、プログラムで一気に修正できそうですね!
![]()
【Yuki】
その通りです。たくさんの画像を一括で処理するのは、プログラムが得意とするところですからね。
画像の切り抜き(クロッピング)
![]()
【Yuki】
画像の一部だけを切り出す「クロッピング」もよく使われます。切り出す範囲は「左、上、右、下」の座標をタプルで指定します。
# (left, upper, right, lower) の座標で指定
# 左上の座標(100, 100)から右下の座標(400, 400)までを切り抜く
box = (100, 100, 400, 400)
cropped_img = img.crop(box)
cropped_img.save('cropped.jpg')
![]()
【Hiroki】
座標の指定が少し複雑に感じますが、左上を(0, 0)として、そこからのピクセル数で考えるんですね。
![]()
【Yuki】
ええ、そうです。慣れるまでは少し戸惑うかもしれませんが、図を描いて考えると分かりやすいかもしれません。
フィルタ処理と色調補正
![]()
【Yuki】
Pillowには、画像をぼかしたり、輪郭を強調したりするフィルタ機能も備わっています。ImageFilterモジュールを使います。
from PIL import ImageFilter
# ぼかし(ガウスぼかし)
blurred_img = img.filter(ImageFilter.GaussianBlur(radius=2))
# 輪郭抽出
contour_img = img.filter(ImageFilter.CONTOUR)
# グレースケール(白黒)変換
gray_img = img.convert('L')
![]()
【Hiroki】
おお、一気に加工っぽくなりました!白黒にするだけで雰囲気が変わりますね。
![]()
【Yuki】
そうですね。こうした機能は、大量の画像を機械学習のデータセットとして使う際の前処理などでも、静かに、でも確実に役立っているんですよ。誰かの目的を達成するための小さな手助けができるツールというのは、とても素敵だと思います。
画像へのテキスト描画
![]()
【Yuki】
画像に文字を入れることもできます。これにはImageDrawとImageFontを使います。
from PIL import ImageDraw, ImageFont
# 描画用のオブジェクトを作成
draw = ImageDraw.Draw(img)
# フォントの設定(フォントファイルのパスとサイズを指定)
# Windowsなら 'C:/Windows/Fonts/arial.ttf' など
try:
font = ImageFont.truetype("arial.ttf", 36)
except IOError:
font = ImageFont.load_default()
# テキストを描画 (座標, テキスト, フォント, 色)
draw.text((50, 50), "Hello Python!", font=font, fill=(255, 255, 255))
img.save('text_added.jpg')
![]()
【Hiroki】
画像に直接文字が書けるなら、メモを自動で入れたりするスクリプトが作れそうです。
![]()
【Yuki】
はい、バナー画像の自動生成などにも応用できますね。
最新のAI API(Gemini)との連携
![]()
【Yuki】
最近では、加工した画像をAIに解析させることも一般的になっています。例えば、Googleの最新AIモデル「gemini-3-flash-preview」を使って、Pillowで加工した画像の内容を読み取ることもできます。ライブラリは最新のgoogle-genaiを使うのが良いでしょう。
from google import genai
from google.genai import types
client = genai.Client(api_key="YOUR_API_KEY")
# Pillowで加工した画像を保存し、それをAIに渡す例
# (ここでは簡易的にファイルパスを渡す方法を示します)
response = client.models.generate_content(
model="gemini-3-flash-preview",
contents=[
"この画像には何が写っていますか?",
types.Part.from_uri(file_uri="gs://your-bucket/sample.jpg", mime_type="image/jpeg")
]
)
print(response.text)
![]()
【Hiroki】
Pillowで画像をAIが読み取りやすいサイズや形式に整えてから、Geminiに渡すという流れですね。
![]()
【Yuki】
その通りです。AIも万能ではないので、あらかじめPillowで明るさを調整したり、余計な部分を切り抜いてあげたりすることで、解析の精度が上がることもあるんですよ。
まとめ
![]()
【Hiroki】
Yukiさん、ありがとうございました!Pillowだけでこんなにたくさんのことができるなんて驚きました。
![]()
【Yuki】
喜んでもらえてよかったです。Pillowは他にも画像の合成や透明度の操作など、奥が深いライブラリです。まずは身近な写真のサイズ変更から始めてみると、プログラミングの楽しさがより実感できるかもしれません。
![]()
【Hiroki】
はい、まずは自分のスマホの写真を整理するプログラムを書いてみます!
![]()
【Yuki】
それはいいアイデアですね。もし分からないことがあったら、いつでも聞いてください。応援しています。
参考リファレンス: - Pillow (PIL Fork) Documentation - Python Package Index (PyPI) - Pillow - Google GenAI SDK Documentation
この記事では基礎を解説しましたが、実務においては「もっと複雑なデータを扱いたい」「独自のシステムに組み込みたい」といった、個別の課題に直面することも多いはずです。
「自分で書く時間は最小限に抑え、プロの品質でツールを完成させたい」という方は、ぜひ一度ご相談ください。
- 専門家の知見に基づいた、保守性の高いコード設計
- AIの専門家による、Gemini API等の最新AIを組み合わせた高度な自動化
- ChatGPT等が生成したコードのデバッグ・最適化
「教わる」だけでなく「形にする」パートナーとして、フリーランスエンジニアのmei_13が最短ルートでの解決をサポートします。
初心者から始められるPythonレッスン
● 月額4,000円で質問し放題!!
● 完全オンライン
● 翌日までには必ず返信
● 挫折しない独自の学習メソッド
● 圧倒的高評価!!
● テキストベースで時間を選ばない
● 4,000円/60分の伴走型ビデオチャット指導も可能
● 高品質なサンプルコード
詳細はこちら

