> PIL(Python Imaging Library)是Python提供的圖片處理庫。該庫支持生成縮略圖、轉換圖片格式、生成保存圖片,支持對圖片的像素點操作、濾鏡、顏色處理,同時支持對圖片的自定義大小、旋轉和任意的仿射變換等。。。功能非常強大!
* * *
PIL在Mac上的安裝參考文章[Mac OS X安裝 Scrapy、PIL、BeautifulSoup](http://www.jianshu.com/p/5265b76026d9)
* * *
##### 打開圖片
~~~
import Image
image = Image.open("image.png")
print image.format, image.size, image.mode
~~~

##### 展示圖片
~~~
image.show()
~~~
##### 圖片格式轉換
~~~
import os, sys
image Image
#...
image.save('image.jpg')
~~~
##### 縮略圖
圖片縮小為原圖的四分之一
~~~
import os, sys
image Image
#...
width = image.size[0]
height = image.size[1]
size = width / 4, height / 4
image.thumbnail(size)
image.save('image_thumbnail.png')
~~~
##### 裁剪粘貼
~~~
box = (0, 0, width, height / 2)
imageCut = image.crop(box).transpose(Image.ROTATE_180)
image.paste(imageCut, box)
image.show()
~~~
注意`box`的四個參數的意義與一般理解不同,第一個與第二個參數可視為左上角坐標(0, 0),第三個與第四個參數可視為右下角坐標(width, height / 2),所以這里我們截取的區域是圖片的上半部分。
`crop(box)`方法執行截圖操作,`transpose(Image.ROTATE_180)`顧名思義,是將截取的圖片旋轉180度。
`paste(imageCut, box)`圖片的粘貼,第一個參數`imageCut`是要粘貼的圖片,第二個參數`box`是粘貼在哪個位置。需要注意的是兩個參數的 大小必須相同。

原圖

操作后
##### 分離與合并通道
~~~
r, g, b = image.split()
r.show()
g.show()
b.show()
image = Image.merge("RGB", (b, g, r))
image.show()
~~~
分離RGB通道,并分別展示。`Image.merge("RGB", (b, g, r))`是將圖片的RB通道互換。
##### 簡單的幾何變換
~~~
image.resize((300, 500)).show()
image.rotate(15).show()
image.transpose(Image.FLIP_LEFT_RIGHT).show()
~~~
說一下第三個方法`transpose(...)`,例子中的參數`Image.FLIP_LEFT_RIGHT`表示左右旋轉,還有代表其他意義的參數:
`FLIP_LEFT_RIGHT` :左右旋轉
`FLIP_TOP_BOTTOM` :上下旋轉
`ROTATE_90` :旋轉90度
`ROTATE_180` :旋轉180度
`ROTATE_270` :旋轉270度
##### 濾鏡 ImageFilter
哇哦,這個功能是最讓人期待的,不過很可惜,因為PIL只提供了10種濾鏡效果。
使用時注意引入`ImageFilter`
~~~
import ImageFilter
#...
image.filter(ImageFilter.BLUR).show()
~~~
所有的濾鏡是
`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` 銳化
來看一下效果:

原圖

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 銳化
* * *
PIL的官方文檔在 [這里](http://effbot.org/imagingbook/overview.htm)
- Python爬蟲入門
- (1):綜述
- (2):爬蟲基礎了解
- (3):Urllib庫的基本使用
- (4):Urllib庫的高級用法
- (5):URLError異常處理
- (6):Cookie的使用
- (7):正則表達式
- (8):Beautiful Soup的用法
- Python爬蟲進階
- Python爬蟲進階一之爬蟲框架概述
- Python爬蟲進階二之PySpider框架安裝配置
- Python爬蟲進階三之Scrapy框架安裝配置
- Python爬蟲進階四之PySpider的用法
- Python爬蟲實戰
- Python爬蟲實戰(1):爬取糗事百科段子
- Python爬蟲實戰(2):百度貼吧帖子
- Python爬蟲實戰(3):計算大學本學期績點
- Python爬蟲實戰(4):模擬登錄淘寶并獲取所有訂單
- Python爬蟲實戰(5):抓取淘寶MM照片
- Python爬蟲實戰(6):抓取愛問知識人問題并保存至數據庫
- Python爬蟲利器
- Python爬蟲文章
- Python爬蟲(一)--豆瓣電影抓站小結(成功抓取Top100電影)
- Python爬蟲(二)--Coursera抓站小結
- Python爬蟲(三)-Socket網絡編程
- Python爬蟲(四)--多線程
- Python爬蟲(五)--多線程續(Queue)
- Python爬蟲(六)--Scrapy框架學習
- Python爬蟲(七)--Scrapy模擬登錄
- Python筆記
- python 知乎爬蟲
- Python 爬蟲之——模擬登陸
- python的urllib2 模塊解析
- 蜘蛛項目要用的數據庫操作
- gzip 壓縮格式的網站處理方法
- 通過瀏覽器的調試得出 headers轉換成字典
- Python登錄到weibo.com
- weibo v1.4.5 支持 RSA協議(模擬微博登錄)
- 搭建Scrapy爬蟲的開發環境
- 知乎精華回答的非專業大數據統計
- 基于PySpider的weibo.cn爬蟲
- Python-實現批量抓取妹子圖片
- Python庫
- python數據庫-mysql
- 圖片處理庫PIL
- Mac OS X安裝 Scrapy、PIL、BeautifulSoup
- 正則表達式 re模塊
- 郵件正則
- 正則匹配,但過濾某些字符串
- dict使用方法和快捷查找
- httplib2 庫的使用