Python Image Library(PIL)の使い方
またしてもpython chanllengeです.
PILを用いることになったのでお勉強.
今回はコードとして全部書いてしまいました.
PILを用意
easy_install PIL
もしくは
pip install PIL
とかでいけるはずです.
easy_installとかpipについてはググッてください.
img.py
# -*- encoding:utf-8 -*-
# こうではなく
# import PIL
import Image
def img(filename='sample.jpg'):
# sample.jpgを開く
im = Image.open(filename)
# sample.jpgを閲覧
im.show()
data = im.getdata() # 画素をイテレータとして得る
for d in data:
print d,
# sample.jpgのフォーマット, モード, サイズ, 情報を取得
print 'format =', im.format
print 'mode =', im.mode
print 'size =', im.size
print 'info =', im.info
# sample.jpgをsample2.jpgとしてjpeg形式で保存(png等も指定できる)
im.save('sample2.jpg', 'jpeg')
# sample.jpgを複製して閲覧
im.copy().show()
# 新しく画像を作成(形式, サイズ, 第一引数で指定したcolor)の3つの引数
new_im = Image.new('RGB', (500, 633), (128, 100, 200))
# 新しく作成した画像をnew_sample.jpgとして保存
new_im.save('new_sample.jpg', 'jpeg')
# new_sample.jpgを開く
ni = Image.open('new_sample.jpg')
# sample.jpgとnew_sample.jpgを0.5ずつの割合でブレンド
bl = Image.blend(im, new_im, 0.5)
# ブレンドしたものをsample3.jpgとして保存
bl.save('sample3.jpg', 'png')
# ブレンドした画像のヒストグラムを表示
print bl.histogram()
# ブレンドした画像をRGBで分解してそれぞれ表示
r, g, b = bl.split()
r.show()
g.show()
b.show()
# ブレンドした画像を2値化して表示
bl.convert('1').show()
# ブレンドした画像をグレースケール化して表示
bl.convert('L').show()
# ブレンドした画像を100*100にサイズ変換して文字列化する
st = bl.resize((100, 100)).tostring()
print st
# 文字列から画像を起こす
# 元画像より大きなサイズにして起こすことは出来ない
im_st = Image.fromstring('RGB', (100, 100), st)
im_st.show()
if __name__ == '__main__':
img()他にも切り貼りしたりも出来るようです.
すっごい簡単に画像処理ができてしまうみたい強力なライブラリでした.
