概要
Python の画像処理ライブラリはPIL(Python Imaging Library)が有名だが、正式リリースは2009年11月15日にリリースされた1.1.7が最後になっている。
アルファ版の1.2a0が2011年1月8日にBitbucket上でリリースされている(effbot / pil-2009-raclette / downloads — Bitbucket)が、ソースの改修は2011年6月28日で止まっている。
「Pillow」は PIL を setuptools 対応にするために fork して開発されているライブラリで、現在も活発にメンテナンスされている。
ただし、PIL も Pillow も正しくは Python 3 に対応していない。Pillowは Python 3対応を徐々にコミットしているようだ。
「Pillow」の方が品質が良さげなので、使ってみる。
インストール
Pillow は setuptools 対応しているので PIL と異なりちゃんと pip でインストールできる。
別途、「libjpeg」、「zlib」、「freetype2」、「littleCMS」を事前にインストールしておくこと。
pip install pillow
Windows を利用している人は、shimizukawa / Pillow / downloads — Bitbucketからビルド済みのライブラリをダウンロードすることも可能。
ドキュメント
ドキュメントは「The Python Imaging Library — Pillow」にある。
また、基本APIはPILと同じなので、動作をためす場合、「PIL Tutorial」はかなり役に立つ。
サンプル
画像処理をする場合のサンプル画像は「SIPI Image Database」から持ってくるのが良い。
おそらくこの手の画像で一番有名なのが、「Lena, or Lenna」の画像だろう。
Pillowのレポジトリ(Pillow/Images at master · python-imaging/Pillow · GitHub)にも存在している。
本当に簡単なサンプルを以下に示す。PIL と使い方に違いはない。
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import unittest
import Image
class TestPillow(unittest.TestCase):
def setUp(self):
self.image = Image.open('lena.ppm')
def test_open(self):
"""画像を開く"""
self.assertEqual('PPM', self.image.format)
self.assertEqual((128, 128), self.image.size)
self.assertEqual('RGB', self.image.mode)
def test_tojpeg(self):
"""画像を リサイズして JPEG に変換"""
small = self.image.resize([32, 32])
small.save('lena_small.jpg', 'JPEG')
if __name__ == '__main__':
unittest.main()
まとめ
画像を簡単に処理する Python のライブラリ Pillow を使ってみた。画像処理はちょっとした時に必要になるので、覚えておいて損はない。