Pythonで画像の大きさやフォーマットを調べる(Pillow編)

PythonでPillow(PIL)モジュールを使うときの画像のオブジェクト(Imageオブジェクト)から、画像のサイズやフォーマットの情報を調べてみます。

目次

  1. 画像のサイズを調べる方法
  2. 画像のフォーマットを調べる方法
  3. 画像のモードを調べる方法
  4. 画像ファイルのメタ情報を調べる方法
  5. 画像のパレットを取得する方法

画像のサイズを調べる方法

Pillow(PIL) のImageオブジェクトのサイズを調べるには、sizeプロパティを参照します。

(width, height) = img.size

戻り値は、幅(int)と高さ(int)のタプルです。

縦横256ドットの画像ファイルを読み込んで、サイズを表示してみます。

>>> from PIL import Image
>>> img = Image.open('original.png')
>>> img.size
(256, 256)

幅や高さだけでよければ、widthプロパティやheightプロパティでも取得できます。

width = img.width
height = img.height

戻り値の型はintです。

縦横256ドットの画像ファイルを読み込んで、サイズを表示してみます。

>>> from PIL import Image
>>> img = Image.open('original.png')
>>> img.width
256
>>> img.height
256

画像のフォーマットを調べる方法

formatプロパティにアクセスすると、画像のフォーマットが取得できます。

fmt = img.format

戻り値の型はstrです。Imageオブジェクトにフォーマットが設定されていない場合はNoneが返ります。

PNGファイルを読み込んで、フォーマットを表示してみます。

>>> from PIL import Image
>>> img = Image.open('original.png')
>>> img.format
'PNG'

画像のモードを調べる方法

Imageオブジェクトには、フォーマットの他にモードというものがあります。modeプロパティにアクセスするとモードを取得できます。

m = img.mode

戻り値の型はstrです。

カラーで透過でないPNGファイルを読み込んで、モードを表示してみます。

>>> from PIL import Image
>>> img = Image.open('original.png')
>>> img.mode
'RGB'

どういうモードがあるのかは、下表を参照してください。

モード 内容
1 1 bit/pixel 白黒画像
L 8 bit/pixel 白黒画像
P 8 bit/pixel カラーパレット画像
RGB 3x8 bit/pixel カラー画像
RGBA 4x8 bit/pixel 透過度マスク付きカラー画像
CMYK 4x8 bit/pixel CMYKカラー画像
YCbCr 3x8 bit/pixel ビデオカラー画像
LAB 3x8 bit/pixel Labカラー画像
HSV 3x8 bit/pixel HSVカラー画像
I 32 bit/pixel 符号付き整数
F 32 bit/pixel 浮動小数点数

画像ファイルのメタ情報を調べる方法

infoプロパティにアクセスすると、画像ファイルから得られるメタ情報を取得できます。どのような情報が得られるかは、ファイル次第です。

d = img.info

戻り値の型はdictです。

PNGファイルを読み込んで表示してみます。

>>> from PIL import Image
>>> img = Image.open('original.png')
>>> img.info
{'srgb': 0, 'gamma': 0.45455, 'dpi': (96, 96)}

色空間とガンマと解像度が表示されました。

画像のパレットを取得する方法

カラーパレットが設定されている場合は、paletteプロパティからパレットの情報が取得できます。

p = img.palette

戻り値の型はPIL.ImagePletteです。

広告

Pythonで画像処理カテゴリの投稿