安裝
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