Pillow模塊學習

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官網

參考網址

廖雪峯老師的Python教程

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章