簡單的Pillow

    安裝

    Pillow和PIL不可以同時存在於系統環境中,大於等於1.0小於2.1.0的Pillow版本不支持import Image,請使用from PIL import Image;大於等於2.1.0的,請使用from PIL Image import core as imageing。

    Pillow2.0.0以下的版本支持Python2.4到2.7的版本,2.00<=Pillow<4.0.0的版本支持Python2.6,2.7,3.2-3.5的版本;4.0.0<=Pliiow<5.0.0的版本支持Python2.7,3.3-3.6的版本;Pillow>=5.0.0的版本支持Python2.7,3.4,3.5,3.6的版本。

    Pillow安裝,直接通過在CMD中通過pip install pillow,其他一些與安裝配置有關的相關問題請網上查閱。


    函數


    利用Image模塊中的open()函數進行圖像加載:

    from PIL import Image
    im=Image.open("1.jpg")
    from __future__ import print_function
    print(im.format,im.size,im.mode)

    通過format表示圖像的來源,size表示圖像的長、寬,mode定義了圖像中的數量、名稱、像素類型和深度,常見的

    分爲三種:灰度圖像亮度L,真彩圖像RGB,印前圖像CMYK。

im.show()

    顯示載入的圖像

 

    通過Image中的open和save分別對圖像進行讀寫。

    將文件轉換成JPEG

from __future__ import print_function
import os,sys
from PIL import Image

for infile in sys.argv[1:]:
    f,e=os.path.splitext(infile)
    outfile=f+".jpg"
    if infile !=outfile:
        try:
            Image.open(infile).save(outfile)
        except IOError:
            print("cannot convert",infile)

    創建JPEG縮略圖

from __future__ import print_function
import os,sys
from PIL import Image
size=(128,128)
for infile in sys.argv[1:]:
    outfile=os.path.splitext(infile)[0]+".thumbnail"
    if infile !=outfile:
        try:
            im=Image.open(infile)
            im.thumbnail(size)
            im.save(outfile,"JPEG")
        except IOError:
            print("cannot create thumbbail for",infile)

    使用Image中的crop()函數進行矩形區域提取,box中的數字依次表示左上右下,提取出來的矩形是一個300*300的矩形

 box=(100,100,400,400)
 region=im.crop(box)

    對矩形進行處理,並還原

region=region.transpose(Image.rotate_180)
im.paste(region,box)
    圖像滾動

    

def roll(image,delta):
    #roll an image sideways
    xsize,ysize=image.size
    delta=delta%xsize
    if delta==0:return image
    
    part1=image.crop((0,0,delta,ysize))
    part2=image.crop((delta,0,xsize,ysize))
    part1.load()
    part2.load()
    image.paste(part2,(0,0,xsize-delta,ysize))
    image.paste(part1,(xsize-delta,0,xsize,ysize))
    
    return image

 使用

    r, g, b = im.split()
    im = Image.merge("RGB", (b, g, r))
    使用函數rotate()和transpose()進行角度選擇

    使用convert()進行"L"和"RGB"之間的模式轉換test=im.convert("L")

    增強過濾器

    from PIL import ImageFilter

    out=im.filter(ImageFilter.DETATL)

    點操作

    out=im.point(lambda i: i*1.2)

    使用point()和paste()來選擇性的修改圖像,掩膜創造

    source=im.split()

    R,G,B=0,1,2

    mask=source[R].point(lambda i : i<100 and 255)

    out=source[G]point(lambda i : i * 0.7)

    source[G].paste(out,None,mask)

    im=Image.merge(im.mode,source)

    掩膜創造的語法

    imout=im.point(lambda i : expression and 255)

    圖像增強

    from PIL import ImageEnhance

    enh=ImageEnhance.Contrast(im)

    enh.enhance(1.3).show("30% more contrast")

    使用seek()和tell()對FLI/FLC/GIF視頻之間進行幀數移動

    from PIL import Image

    im=Image.open("animation.gif")

    im.seek(1)

try:

    while 1:

        im.seek(im.tell()+1)

except EOFError:

    pass


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