Python學習之PIL庫的使用


一、PIL庫簡介

1.安裝PIL庫

PIL庫是Python的第三方庫,需要手動通過pip工具安裝。

  可通過cmd命令:pip install pillow  進行安裝。(注意:出現pip不是內部處理命令時需要配置一下環境)。

2.PIL庫的功能

PIL庫支持圖像存儲、顯示和處理,它能夠處理幾乎所有的圖片格式,可以完成對圖像的縮放、剪裁、疊加以及向圖像添加線條、圖像和文字等操作。

具體如下:

(1)圖像歸檔:對圖像進行批處理,生成圖像預覽圖,圖像格式轉換等。

(2)圖像處理:圖像基本處理,像素、顏色處理等。

二、PIL庫使用

3.PIL庫Image類解析

(1)Image類的圖像讀取和創建方法:

    Image.open(filename)          根據所給的參數進行加載圖片的操作

    Image.new(mode,size,color)       根據給定的參數創建一個新的圖像

    Image.open(StringIO.StringIo(buffer))   從字符串中獲取圖像

    Image.frombytes(mode,size,data)      根據像素點data創建圖像

    Image.verify()              對圖像文件完整性進行檢查,返回異常

通過Image打開圖像文件時,圖像的柵格數據不會直接被解碼或者加載,程序只是讀取了圖像文件頭部的元數據信息,這部分信息標識了圖像的格式、顏色、大小等。

因此,打開一個文件會十分的迅速,與圖像的存儲和壓縮方式無關。

 

加載一個圖像文件的方法:

 (2)Image類的常用屬性

    Image.dormat      標識圖像格式或來源,如果圖像不是從文件讀取,值為None

    Image.mode        圖像的色彩模式,“L”為灰度圖像,“RGB”為真彩色圖像,“CMYK”為出版圖像

    Image.size        圖像的寬度和高度,單位是像素(px),返回值是二元元組(tuple)

    Image.palette      調色板屬性,返回一個ImagePalette類型

查看已讀取的圖像文件屬性:

打印結果為:

拓展:

  CMYK色彩是彩色印刷時采用的一套色彩體系,也成印刷四色。印刷中顏色混合原理不一樣,其中C是青色,M是紅色,Y是黃色以及K是定位套版色(黑色)。

(3)Image類的序列圖像操作方法

    Image.seek(frame)     跳轉並返回圖像中的指定幀

    Image.tell()         返回當前幀的序號

如:

(4)其他方法:

Image類的圖像轉換和保存方法:

    Image.save(filename,format)        將圖像保存為filename文件名,format是圖片格式

    Image.convert(mode)         使用不同的參數,轉換圖像為新的模式

    Image.thumbnail(size)           創建圖像的略縮圖,size是略縮圖尺寸的二元元組

Image類的圖像旋轉和縮放方法

    Image.resize(size)      按size的大小調整圖像,生成副本

    Image.rotate(angle)       按angle的角度旋轉圖像,生成副本

Image類的圖像像素和通道處理方法

    Image.point(func)      根據函數func的功能對每個元素進行運算,返回圖像副本

    Image.split()         提取RGB圖像的每個顏色通道,返回圖像副本

    Image.merge(mode,bands)    合並通道,其中mode表示色彩,bands表示色彩的通道

    Image.blend(im1,im2,alpha)   將兩幅圖片im1和im2按照下公式:im1*(1.0-alpha)+im2*alpha   插值后生成新圖像 

如交換圖像中的顏色:

如對圖像的每個像素點操作:

(5)拓展

PIL庫的ImageFilter和ImageEnhance類提供了過濾圖像和增強圖像的方法

ImageFilter類的預定義過濾方法:

    ImageFilter.BLUR              圖像的模糊效果

    ImageFilter.CONTOUR              圖像的輪廓效果

    ImageFilter.DETALE                圖像的細節效果

    ImageFilter.EDGE_ENHANCE          圖像的邊界加強效果

    ImageFilter.EDGE_ENHANCE_MORE     圖像的閾值邊界加強效果

    ImageFilter.EMBOSS              圖像的浮雕效果

    ImageFilter.FIND_EDGES            圖像的邊界效果

    ImageFilter.SMOOTH              圖像的平滑效果

    ImageFilter.SMOOTH_MORE            圖像的閾值平滑效果

    ImageFilter.SHARPEN             圖像的銳化效果

利用Image類的filter()方法可以使用ImageFilter類,方法如下:

    Image.filter(ImageFilter.function)  (注:function為BLUR、CONTOUR、DETALE等功能)

如獲取圖像輪廓:

ImageEnhance類的圖像增強和濾鏡方法:

    ImageEnhance.enhance(factor)         對選擇屬性的數值增強factor倍

    ImageEnhance.Color(im)           調整圖像的顏色平衡

    ImageEnhance.Contrast(im)            調整圖像的對比度

    ImageEnhance.Brightness(im)           調整圖像的亮度

    ImageEnhance.Sharpness(im)         調整圖像的銳度

如增強圖像的對比度為初始的20倍:

 

 

 

 

 

 

僅作為個人Python學習筆記


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM