【Python】画像加工ライブラリPillow使ってみた!

2023年07月26日 更新日:2023年08月23日



最近サムネイルの作成で画像加工を良くしますが、結構面倒くさいんですよねw


そこで、サムネイルのリサイズを自動化する方法を考えてみました!


説明

サムネイルを自動で作成するニャ


Pillowとは


PillowはPythonの画像加工ライブラリで、画像の操作や変換、表示などを行うための便利なツールです。


画像の読み込み、保存、サイズ変更、回転、フィルタリング、色変換などの基本的な画像処理ができます。


シンプルな作業に適していて、動作が軽量なことが特徴です。

複雑な作業はOpenCVというライブラリに任せると良いでしょう。


なお、今回の動作環境はGoogle Colaboratoryとします。


作業開始!


今回はGoogle Colaboratoryを使います。

PillowはColaboratoryに初めから組み込まれているのでインストールの必要はないです。


モジュールの読み込み


モジュールを読み込みます。

PILはPillowの前身で、互換性のために読み込みのときにPILとすることになっているそうです。


from PIL import Image


画像の読み込み


今回はこの画像(cat.jpg)を加工していこうと思います。




Image.openで画像を読み込むことができます。


img = Image.open('cat.jpg')


画像の情報を取得


print(img.format) #画像形式
print(img.size) #画像サイズ
print(img.mode) #色モード
print(img.getpixel((1000,1000))) #左上から数えて(1000,1000)のピクセル値


出力結果


JPEG #画像形式
(1280, 1281) #画像サイズ(幅,高さ)
RGB #色モード
(255, 255, 255) #ピクセル値


RGBは赤緑青で構成される画像であることを示しています。


ピクセル値は(1000,1000)の赤緑青の数値を表しています。

255が最大値なので、これは白を表します。


画像のリサイズ


resize()を使います。

第一引数に新しいサイズ、第二引数にresampleを指定します。


resampleは次の6つから指定します。

下へ行くほど画質が向上し、処理が遅くなります。


Image.NEAREST

Image.BOX

Image.BILINEAR

Image.HAMMING

Image.BICUBIC

Image.LANCZOS


今回は何百枚も加工するわけではないので、Image.LANCZOSを指定します。


new_img = img.resize((100,100), Image.LANCZOS)


画像を保存する


sava()で保存できます。

第一引数にファイル名、第二引数にクオリティーを指定してください。

95以上は容量が増えるだけで意味がないそうです。

デフォルトは75となっています。


このとき、ファイル形式を変更できます。

今回はイラストなのでpng形式に変更しておきます。


new_img.save('new_cat.png', quality=95)


出力結果



最後に


今回は自動でリサイズする方法について解説しました。


今回使った全コードはこちらになります。


from PIL import Image

img = Image.open('cat.jpg')

print(img.format) #画像形式
print(img.size) #画像サイズ
print(img.mode) #色モード
print(img.getpixel((1000,1000))) #左上から数えて(1000,1000)のピクセル値

new_img = img.resize((100,100), Image.LANCZOS)

new_img.save('new_cat.png', quality=95)


このブログに画像加工機能を付けることってできるのかな…


できるようだったら近いうちに実装して、誰でも使えるようにしたいと思います!


SNSで感想をシェアしてね↓