Pillow介紹
PIL:Python Imaging Library
,已經是Python平臺事實上的圖像處理標準庫了。PIL功能非常強大,但API卻非常簡單易用。
由於PIL僅支持到Python 2.7,加上年久失修,於是一羣志願者在PIL的基礎上創建了兼容的版本,名字叫Pillow
,支持最新Python 3.x,又加入了許多新特性,因此,我們可以直接安裝使用Pillow。
安裝的方式很簡單,執行pip install pillow
即可。但是請注意不是通過import pillow
導入模塊,而是通過from PIL import Image
導入圖片對象。
pillow的簡單使用
下面是對一個圖像進行縮小以及對圖像進行模糊處理和輪廓處理的例子。
from PIL import Image
from PIL import ImageFilter
def func_narrow_img():
# 打開圖像 類型是from PIL.JpegImagePlugin import JpegImageFile
img = Image.open("d:/imgs/wolf.jpg")
# 獲取圖像大小即寬高
print("img size: ", img.size)
print("width={}\theight={}".format(img.width, img.height))
# 縮放圖像
# 譬如縮小一半
size=(img.width//2, img.height//2)
img.thumbnail(size)
print("reset img size: ", img.size)
# 保存縮小後的圖片
img.save("d:/imgs/wolf_small.jpg", "jpeg")
def func_blur_img():
# 打開圖像 類型是from PIL.JpegImagePlugin import JpegImageFile
img = Image.open("d:/imgs/wolf.jpg")
# 會返回新的img對象
# ImageFilter.CONTOU 輪廓圖 圖片很美
new_img = img.filter(ImageFilter.CONTOUR)
new_img.thumbnail((new_img.width//2, new_img.height//2))
new_img.save("d:/imgs/wolf_contour.jpg", "jpeg")
# ImageFilter.BLUR 模糊圖
new_img = img.filter(ImageFilter.BLUR)
new_img.save("d:/imgs/wolf_blur.jpg", "jpeg")
生成驗證碼
代碼比較簡單,代碼內容都有註釋,就不在這裏贅述了。
特別是在查找本地的字體文件時可以通過Everything
去搜索某個字體文件。
from PIL import Image
from PIL import ImageFont
from PIL import ImageDraw
import random
# 返回隨機字母或數字
def rand_char():
if random.randint(0,1):
return chr(random.randint(65, 90))
else:
return str(random.randint(0,9))
# 返回隨機顏色
def rand_color():
return (random.randint(64, 255), random.randint(64, 255), random.randint(64, 255))
def func_code():
width=240
height=60
# 創建img對象
img = Image.new("RGB", (width, height), (255, 255, 255))
# 創建Font對象
font = ImageFont.truetype(r"C:\Windows\Fonts\arialbd.ttf", size=36)
# 創建Draw對象
draw = ImageDraw.Draw(img)
# 填充每個像素
for x in range(width):
for y in range(height):
draw.point((x,y), fill=rand_color())
# 輸出文字
for t in range(4):
draw.text((60*t+10, 10), rand_char(), fill=rand_color(), font=font)
# 未模糊前的圖像
img.save("d:/imgs/test1.jpg", "jpeg")
# 模糊
img = img.filter(ImageFilter.BLUR)
# 模糊後的圖像
img.save("d:/imgs/test2.jpg", "jpeg")
if __name__ == "__main__":
func_code()
pass
pillow進階
更多詳細內容請參考偉大的Pillow官網。