Python Imaging Library(PIL)をOSX Lionにセットアップ
Pythonで画像処理をやってみたいと思ったので、Python Imaging Library (PIL)なるライブラリを導入してみました。
導入の際に参考にさせて頂いたのは以下のページです。
まず、上記ページを参考にしながら以下をインストールします。
次にPILのインストール作業に入ります。僕の環境ではこの段階でPILのBuildを実行すると以下のようなSETUP SUMMARYが表示され、Little CMSがサポートされていないと怒られました。この段階でもBuildは正常に終了しているように見えるのですが、やはり気持ちが悪いのでLittle CMSの環境を構築する事にします。
macbook:~ ox$ python setup.py build : -------------------------------------------------------------------- PIL 1.1.7 SETUP SUMMARY -------------------------------------------------------------------- version 1.1.7 platform darwin 2.6.6 (r266:84292, Jun 16 2011, 16:59:16) [GCC 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2335.15.00)] -------------------------------------------------------------------- --- TKINTER support available --- JPEG support available --- ZLIB (PNG/ZIP) support available --- FREETYPE2 support available *** LITTLECMS support not available -------------------------------------------------------------------- :
Little CMSの環境を構築するため少し調べてみた結果、とりあえずMacPortsでインストールする事が可能と言う情報を見つけたのでインストール。
macbook:~ ox$ port list | grep lcms lcms @1.19 graphics/lcms lcms2 @2.2 graphics/lcms2 macbook:~ ox$ sudo port install lcms
MacPortsで入手できるLittle CMSは1系と2系が存在していますが、PILで必要とされているのは1系のようです。Little CMSのインストールが無事に完了した後に再度Buildを実行するとSETUP SUMMARY上でLITTLECMSもサポートされていると表示が変更になりました。
-------------------------------------------------------------------- PIL 1.1.7 SETUP SUMMARY -------------------------------------------------------------------- version 1.1.7 platform darwin 2.6.6 (r266:84292, Jun 16 2011, 16:59:16) [GCC 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2335.15.00)] -------------------------------------------------------------------- --- TKINTER support available --- JPEG support available --- ZLIB (PNG/ZIP) support available --- FREETYPE2 support available --- LITTLECMS support available --------------------------------------------------------------------
Setupが問題なく終了したら次はselftest.pyを実行しましょう。
macbook:Imaging-1.1.7 ox$ python selftest.py -------------------------------------------------------------------- PIL 1.1.7 TEST SUMMARY -------------------------------------------------------------------- Python modules loaded from ./PIL Binary modules loaded from ./PIL -------------------------------------------------------------------- --- PIL CORE support ok --- TKINTER support ok --- JPEG support ok --- ZLIB (PNG/ZIP) support ok --- FREETYPE2 support ok --- LITTLECMS support ok -------------------------------------------------------------------- Running selftest: --- 57 tests passed.
この時、"importError: No module named _imagingmath"とエラーが出た場合は次のようにBuildオプションを変更して再Buildして下さい。(参考情報)
僕の環境ではこれでエラーがなくなりました。
python setup.py build_ext -i
その後インストールまで完了させた後、Tutorial(PDF)に従ってライブラリをimportしようとしましたがエラーが出てしまいます。色々試してみた結果、PILをトップディレクトリとしたパッケージとしてimportしないと駄目なようです。
macbook:~ ox$ python Python 2.6.6 (r266:84292, Jun 16 2011, 16:59:16) [GCC 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2335.15.00)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>> import Image Traceback (most recent call last): File "<stdin>", line 1, in <module> ImportError: No module named Image >>> >>> import PIL.Image as Image >>>
他の方々のサンプルコードを実行する場合はimport ~ asをするように修正してあげればそのまま実行できると思います。
導入環境
ソースからビルドしたものは括弧内にDLしたファイル名を記載しています。
サンプルコードを実行する
Tutorial(PDF)の中からサムネイル作成のコードがあったのでサンプルとして実行してみました。サンプルコードからはimport文のみ変更しています。
Example: Create JPEG Thumbnails
import os, sys import PIL.Image as Image for infile in sys.argv[1:]: outfile = os.path.splitext(infile)[0] + ".thumbnail" if infile != outfile: try: im = Image.open(infile) im.thumbnail((128, 128)) im.save(outfile, "JPEG") except IOError: print "cannot create thumbnail for", infile
実行ログ
macbook:tmp ox$ ls create_jpeg_tumbnails.py image.jpg macbook:tmp ox$ python create_jpeg_tumbnails.py image.jpg macbook:tmp ox$ ls create_jpeg_tumbnails.py image.thumbnail image.jpg
create_jpeg_tumbnails.pyにimage.jpgを渡して実行すると、大きい画像のimage.jpgに対して128x128サイズのimage.thumbnailファイルが新たに作成されました。