Thursday, November 27, 2008

Python Imaging Libraryで画像を円形にぼかす

Python Imaging Libraryで画像を円形にぼかすには、以下のコードを実行します。

# coding=UTF-8
import Image
import ImageDraw
import math

# 画像のぼけた円で切り取る
#xx=i/w-.5; yy=j/h-.5; rr=xx*xx+yy*yy; 1-rr*4
img1 = Image.open("sf.jpg")
img2 = Image.new("L", img1.size, 1)
for ly in range(img2.size[1]):
for lx in range(img2.size[0]):
img2.putpixel((lx,ly),
int((1-(pow(lx/float(img2.size[0])-0.5, 2)+
pow(ly/float(img2.size[1])-0.5, 2))*4)*255))
img1.putalpha(img2)
# pngで保存
img1.save("sample652a.png")

# 白背景と合成してjpegで保存
img3 = Image.new("RGB", img1.size, "#ffffff")
img3.paste(img1, mask=img1)
img3.save("sample652b.jpg")

元画像(sf.jpg)


出力画像1(sample652a.png)



出力画像2(sample652b.jpg)



関連項目
Python Imaging Libraryまとめ
Python Imaging Libraryで画像の端を半透明にぼかす
Python Imaging Libraryで画像をぼかした円で切り取る

No comments: