==Python Imaging Library==
[[Python]]
*http://www.pythonware.com/library/pil/handbook/overview.htm
=====Pillow Python Imaging Library (Fork)=====
*成功するとImageオブジェクトを返す
>>> >>> import Image >>> >>> im = Image.open(r'c:\work\py\pil01.jpg') >>> >>> print im.format, im.size, im.mode
JPEG (682, 453) RGB
=====一旦 Imageクラス を作成するとイメージの処理や操作ができる=====
*イメージを表示する例
>>> >>> im.show()
====イメージの読み書き====
*ファイル名の拡張子に基づいた変換をライブラリは行う。
>>> >>> import Image >>> >>> im = Image.open(r'c:\work\py\pil01.jpg') >>> >>> im.save(r'c:\work\py\pil01.bmp')
<<blockquote>>標準の拡張子を使わない場合など、saveメソッドの2つ目の引数にフォーマットを指定することもできる<</blockquote>> >>> >>> im.save(r'c:\work\py\pil01.xxx','gif')
====サムネイルを作成する====
>>> >>> import Image >>> >>> size = (100, 100) >>> >>> im = Image.open(r'c:\work\py\pil01.jpg') >>> >>> im.thumbnail(size) >>> >>> im.save(r'c:\work\py\pil01_thum.jpg')
====イメージファイルの識別====
*ファイルを開いたとき、ファイルヘッダーはファイルフォーマット、モード、サイズなど、ファイルをデコードするためのプロパティを決定するために読み込まれるが、ファイルの残りの部分は後まで処理されない。
*これは、ファイルサイズや圧縮方法によらず、イメージファイルをすばやく処理できることを意味する。
>>> >>> import Image >>> >>> im = Image.open(r'c:\work\py\pil01.jpg') >>> >>> print im.format, im.size, im.mode
JPEG (682, 453) RGB
=====矩形を切り取り=====
>>> >>> import os >>> >>> import Image >>> >>> os.chdir(r'c:\work\py') >>> >>> im = Image.open(r'.\pil01.jpg') >>> >>> box = (100,100,400,400) >>> >>> region = im.crop(box) >>> >>> region.save(r'.\region01.jpg')
=====矩形を貼り付けなおす=====
*しかしながら、イメージのモードは一致する必要はありません。
*貼り付け前に自動的に変換されます
>>> >>> region = region.transpose(Image.ROTATE_180) >>> >>> im.paste(region, box) >>> >>> im.save(r'.\pil01.jpg')
=====カラーバンドの分割とマージ=====
*merge 関数は、モードとイメージのタプルからそれらを混ぜ合わせ新しいイメージを作成する。
>>> >>> import Image >>> >>> im = Image.open(r'c:\work\img\test01.jpg') >>> >>> r, g, b = im.split() >>> >>> im = Image.merge("RGB", (b, g, r)) >>> >>> im.save(r'c:\work\img\test02.jpg')
*test01.jpg
[[File:1044_test01.jpg]]
====幾何学的な変形====
*Imageクラスは、resize および rotate メソッドを持つ
>>> >>> im = Image.open(r'c:\work\img\test01.jpg') >>> >>> out = im.resize((50,50)) >>> >>> out = out.rotate(45) >>> >>> out.save(r'c:\work\img\test03.jpg')
*test03.jpg
[[File:1046_test03.jpg]]
out = im.transpose(Image.ROTATE_270)
>>> >>> im = Image.open(r'c:\work\img\test01.jpg') >>> >>> im = im.transpose(Image.FLIP_LEFT_RIGHT) >>> >>> im.save(r'c:\work\img\test06.jpg')
*test06.jpg
[[File:1047_test06.jpg]]
**[http://ja.wikipedia.org/wiki/RGB RGB]
**[http://ja.wikipedia.org/wiki/CMYK CMYK]
>>> >>> import Image >>> >>> im = Image.open(r'c:\work\img\test01.jpg').convert('CMYK') >>> >>> im.save(r'c:\work\img\test07.jpg')
*[http://typea-mixi01.appspot.com/yh_s?q=CMYK+Firefox ブラウザとCMYKの問題(↓の画像が表示されない、色がおかしい)]
**SMOOTH_MORE
>>> >>> import ImageFilter >>> >>> im = Image.open(r'c:\work\img\test01.jpg') >>> >>> out = im.filter(ImageFilter.EMBOSS) >>> >>> out.save(r'c:\work\img\test08.jpg')
*test08.jpg
[[File:1049_test08.jpg]]
*すべてのピクセルはこの関数にしたがって処理される。
=====コントラスト変換=====
>>> >>> im = Image.open(r'c:\work\img\test01.jpg') >>> >>> out = im.point(lambda i: i / 3.0) >>> >>> out.save(r'c:\work\img\test09.jpg')
*test09.jpg
[[File:1050_test09.jpg]]
=====カラーバンドを独立して操作=====
>>> >>> im = Image.open(r'c:\work\img\test01.jpg') >>> >>> source = im.split() >>> >>> r, g , b = 0, 1, 2 >>> >>> mask = source[r].point(lambda i: i < < 100 and 255) >>> >>> out = source[g].point(lambda i: i * 0.7) >>> >>> source[g].past(out, None, mask) >>> >>> source[g].paste(out, None, mask) >>> >>> im = Image.merge(im.mode, source) >>> >>> im.save(r'c:\work\img\test10.jpg')
*test10.jpg
[[File:1051_test10.jpg]]
*イメージの強化機能クラスを、ImageEnhance モジュールで利用可能。
*いったんイメージから enhancement オブジェクトを作成したら、すばやく異なる設定を試すことができる。コントラスト調整、輝度、カラーバランス、シャープネスなど。
>>> >>> import Image, ImageEnhance >>> >>> im = Image.open(r'c:\work\img\test01.jpg') >>> >>> enh = ImageEnhance.Contrast(im) >>> >>> out = enh.enhance(2.0) >>> >>> out.save(r'c:\work\img\test11.jpg')
*test11.jpg
[[File:1052_test11.jpg]]
*seek および tell メソッドによりフレーム間を移動することができる。
=====アニメーションGIFをフレームに分解=====
>>> >>> import Image >>> >>> im = Image.open(r'c:\work\img\anime.gif') >>> >>> try:
... while True:
... im.save(r'c:\work\img\anime' + str(im.tell()) + '.gif')
=====バイナリモードで開いたファイルからImageを作成=====
>>> >>> import Image >>> >>> fp = open(r'c:\work\img\test01.jpg', 'rb') >>> >>> im = Image.open(fp) >>> >>> im.show()
=====文字列IOからImageを作成=====
>>> >>> import Image, StringIO >>> >>> fp = open(r'c:\work\img\test01.jpg', 'rb') >>> >>> buf = fp.read() >>> >>> im = Image.open(StringIO.StringIO(buf)) >>> >>> im.show()