| ページ一覧 | ブログ | twitter |  書式 | 書式(表) |

MyMemoWiki

差分

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

案内メニュー