2023/5/19

pythonでPillowを使ってPNGファイルを減色・圧縮する


PNGファイルのサイズを減らす方法の一つとして、減色する方法があります。
PythonのPillowライブラリを使用すると、簡単に減色処理を実施することができます。

Pillowライブラリについて

Pillowは、豊富な画像処理機能を備えたライブラリです。
画像のリサイズ、圧縮、変換などを簡単に実行することができます。

Pillowのインストール

pipコマンドで一発です。
以下を実行します。

pip install Pillow

pythonでライブラリをインストールする場合、仮想環境を準備することをお勧めします。

(参考)

PNGの減色処理

PNG画像の画質を表すパラメータの一つに、ビット深度というものがあります。
ビット深度は、画像の色情報を表します。

ビット深度8の場合は、2の8乗の256色で画像を表示しています。
ビット深度24の場合は、2の24乗で1677万色です。
(HTMLのカラーコードはRGB各8bitで色を表現しておりビット深度24です。)

ビット深度が8より大きいPNGをビット深度8に減色処理することで、PNGのサイズを圧縮することができます。
以下はPNGの減色処理のソースコードです。

from PIL import Image

# 画像を開く
img = Image.open(image_path)
    
# 256色に減色する
img = img.quantize(256)
    
# 減色後の画像を保存する
output_path = "reduced_colors.png"
img.save(output_path)

Image.open(filepath):

quantize(color)

save(filepath)


下記はビット深度24と、ビット深度8の画像です。
見た目はそこまで変わらないですが、ファイルサイズは約1/5になっています。

ビット深度24のPNGファイルの例 ビット深度8のPNGファイルの例

ビット深度は、画像ファイルのプロパティ→詳細で確認できます。

ビット深度8のPNGファイルの例

Pillowの他の機能は下記を参照ください。
かなり多機能なライブラリとなっており、画像の合成などもできるようです。


以上です。




コメント(githubのアカウントが必要です)