LoginSignup
7
11

More than 1 year has passed since last update.

Pythonの画像処理ライブラリPillow(PIL)の読込み・保存まとめ (JPEG編)

Last updated at Posted at 2021-07-24

はじめに

Pythonの画像処理ライブラリPillowは、手軽に画像の読み込み~加工~保存ができる大変便利なライブラリです。ただし、画像の読込み・保存の詳細について、日本語で書かれたものが少なかったのでまとめました。
本稿は、JPEGの読込み・保存について記載します。
情報は2021年7月時点のものです。PillowのWebページの情報をもとにしました。

JPEGの読込み

読込み & パラメータ表示の例

open.py
from PIL import Image
im = Image.open("./input.jpg")
print(im.info.items())

読込みパラメータ一覧

読込んだ画像のパラメータは、オブジェクトのinfoプロパティに、ディクショナリ形式で格納されます。

パラメータ 説明
jfif .jfifファイル = True
jfif_version jtifのバージョン番号(メジャー, マイナー)
jfif_density 水平、垂直 解像度(画素密度)
jfif_unit 解像度の単位(0 : 単位なし、1 : dpi、2 : dpcm)
dpi dpi(水平、垂直)
adobe Adobe JPEGファイル = True
adobe_transform ベンダー固有のタグ
progression プログレッシブJPEG = True
icc_profile ICCプロファイルの内容
exif EXIFデータの内容
comment コメントの内容

JPEGの保存

Image.save(fp, format=None, **params)

  • fp : ファイル名、pathlib.Pathオフジェクト、またはファイルオブジェクト
  • format : 保存するファイル形式(省略可)
  • params : 保存するパラメータ(省略可)

保存の例

save.py
from PIL import Image
im = Image.open("./input.jpg")
im.save('./output.jpg', 'JPEG' ,quality=95, optimize=True, progressive=True, dpi=im.info.get('dpi'), icc_profile=im.info.get('icc_profile'), exif=im.info.get('exif'), subsampling=-1, qtables='keep')

保存パラメータ一覧

パラメータ 説明
quality 保存画像の品質。0(最低)~95(最高)。初期値は75。(95以上は使用しない)
optimize True = 最適化して保存
progressive True = プログレッシブJPEGで保存
dpi dpi(水平、垂直)の指定
icc_profile True = ICCプロファイルを保存。既存のプロファイルを指定する場合 = icc_profile=im.info.get('icc_profile')
exif 保存するEXIFデータの指定
subsampling 色差成分の保存形式を指定。 -1 : 元のフォーマット、 0 : 4:4:4、 1 : 4:2:2、 2 : 4:2:0
qtables エンコーダーで使用するQテーブルの指定。64個の整数のリストやディクショナリ形式でも指定できますが、"keep"、”web_low”、"web_high"といった名前でも指定できます。画像のサイズを小さくできますが、半面、精細感が失われます。

その他

  1. あとは、pngとgifについて、解説記事を書きたいです。
  2. 蛇足。JPEGの量子化テーブルは普通に『Q Table』なんですね。動画のエンコーダー & デコーダーを開発していたときは、『キューマト(Q Matrixの略)』って呼んでました。

参考リンク

7
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
11