Python PIL 函數
PIL (Python Image Library) 庫是Python 語言的一個第三方庫,PIL庫支持圖像存儲、顯示和處理,可以處理幾乎全部格式的圖片。spa
1、PIL庫簡介code
1. PIL庫主要有2個方面的功能:orm
(1) 圖像歸檔:對圖像進行批處理、生產圖像預覽、圖像格式轉換等。blog
(2) 圖像處理:圖像基本處理、像素處理、顏色處理等。圖片
2. PIL擁有多個類,此處就其中的Image類、ImageFilter類、ImageEnhance類作簡單介紹。utf-8
2、安裝庫函數ci
3、使用庫函數Image類 —— 基本圖像處理字符串
1. 調用Image類it
from PIL import Image
2. Image類關於圖像讀取與建立
方法 |
說明 |
Image.open(filename) |
加載圖像文件 |
Image.new(mode,size,color) |
根據給定參數建立新圖像 |
Image.open(StringIO.StringIO(buffer)) |
從字符串中獲取圖像 |
Image.frombytes(mode,size,color) |
根據像素點建立新圖像 |
Image.verify() |
對圖像完整性進行檢查,返回異常 |
3. Image類的經常使用屬性
方法 |
說明 |
Image.format |
圖像格式或來源,若圖像不是從文件讀取,返回None |
Image.mode |
圖像的色彩模式,’L’爲灰度模式,’RGB’爲真彩色圖像,’C(青)M(品紅)Y(黃)K(黑)’爲出版圖像 |
Image.size |
圖像的寬度和高度,單位是像素(px),返回值爲元組類型 |
Image.palette |
調色板屬性,返回ImagePalette類型 |
4.Image類的序列圖像操做方法
方法 |
說明 |
Image.seek(frame) |
跳轉並返回圖像中的指定幀 |
Image.tell() |
返回當前幀的序號 |
5.Image類的圖像旋轉和縮放方法
方法 |
說明 |
Image.resize(size) |
返回按size大小調整圖像的副本 |
Image.rotate(angle) |
返回按angle角度旋轉圖像的副本 |
6.Image類的圖像轉換和保存方法
方法 |
說明 |
Image.save(filename,format) |
將圖像保存爲filename文件名,format格式 |
Image.convert(mode) |
將圖像轉換爲mode模式 |
Image.thumbnail(size) |
建立圖像的縮略圖,size是縮略圖尺寸的元組
|
# -*- encoding:utf-8 -*-
''' 改變顏色 --- 顏色反轉'''
from PIL import Image
nest = Image.open("D:\\nest.jpg")
r,g,b = nest.split() #獲取原圖的RGB通道的顏色值
newb = b.point(lambda i:i*1.1) #將B通道的顏色值加強
nest1 = Image.merge(nest.mode,(b,g,r))
nest1.thumbnail((400,254)) #建立縮略圖
nest1.save("D:\\nest_2.jpg")
7.Image類的圖像像素和通道處理方法
方法 |
說明 |
Image.point(func) |
根據函數func的功能對每一個元素進行運算,返回圖像副本 |
Image.split() |
根據GRB圖像的每一個顏色通道,返回圖像副本 |
Image.merge(mode,bands) |
合成通道,其中mode爲色彩,bands爲新的色彩通道 |
Image.blend(im1,im2,alpha) |
將2張圖片im1和im2按照公式插值後生成新圖像 公式:im1*(1.0 - alpha) + im2*alpha |
4、使用庫函數ImageFilter類 —— 圖像過濾
1.調用ImageFilter類
from PIL import ImageFilter
2. ImageFilter類預約義圖像過濾方法
方法 |
說明 |
ImageFilter.BLUR |
圖像的模糊效果 |
ImageFilter.CONTOUR |
圖像的輪廓效果 |
ImageFilter.DETAIL |
圖像的細節效果 |
ImageFilter.EDGE_ENHANCE |
圖像的邊界增強效果 |
ImageFilter.EDGE_ENHANCE_MORE |
圖像的閾值邊界增強效果 |
ImageFilter.EMBOSS |
圖像的浮雕效果 |
ImageFilter.FIND_EDGES |
圖像的邊界效果 |
ImageFilter.SMOOTH |
圖像的平滑效果 |
ImageFilter.SMOOTH_MORE |
圖像的閾值平滑效果 |
ImageFilter.SHARPEN |
圖像的銳化效果 |
# -*- encoding:utf-8 -*- ''' 輪廓效果 --- 素描 ''' from PIL import Image from PIL import ImageFilter square = Image.open("D:\\square.jpg") square1 = square.filter(ImageFilter.CONTOUR) #選擇輪廓效果 square1.save("D:\\square0.jpg")