1.1 PIL:Python影象處理類庫
from PIL import Image
img = Image.open('Husky.jpg')
# 看看這貨長什麼樣子 img
# 看看它的大小 print('The size of this image is:{0}'.format(img.size))
The size of this image is:(1588, 1257)
# 這貨太大了,把它變得小巧些 img.thumbnail((700, 700))
img
真正改變大小的方法應該是resize(),下面介紹下thumbnail和resize的異同
- 相同點:兩者都接受元組(寬,高)作為新圖片的大小;
- 不同點:
- thumbnail是快速生成縮圖的方法,img.thumbnail()直接在img上操作,不可逆;new_img = img.resize(),resize方法會生成一個新的PIL物件並返回
- thumbnail生成縮圖是按比例縮放的;而resize是完全按照給定的元組的大小縮放
- thumbnail傳入的元組不可超過當前圖片的大小
# 驗證第3點 print("執行thumbnail方法之前img的大小為:{0}".format(img.size)) # 輸入的元組大小大於(700, 554) img.thumbnail((1000, 1000)) print("執行thumbnail方法之後img的大小為:{0}".format(img.size)) # 如果輸入元組的大小小於(700, 554),驗證第2點 img.thumbnail((500, 500)) print("再次縮放後img的大小為:{0}".format(img.size))
執行thumbnail方法之前img的大小為:(700, 554) 執行thumbnail方法之後img的大小為:(700, 554) 再次縮放後img的大小為:(500, 395)
# 用resize圖片變為原來的大小,但是可以看見清晰度比原來低了好幾檔 img.resize((1588, 1257))
img
# 得到灰度圖 img_grey = img.convert('L')
img_grey
# 使用crop()方法可以裁剪指定區域 box = (100, 30, 490, 395) region = img_grey.crop(box)
# 看起來更帥了,box是一個四元組。圖片以左上角為(0,0)點,box中的4個數字分別代表左上角的x值,左上角的y值,右下角的x值,右下角的y值 region
# 不能讓它這麼帥,rotate方法可以讓其逆時針旋轉一個角度 rotate_img = region.rotate(90)
rotate_img
# 對原本的圖片操作,將旋轉的部分貼上回原圖片 img.paste(rotate_img, box)
# 可以看見圖片中有些黑色部分,那是因為box擷取的區域並不是一個正方形,寬大於高,旋轉過來時原來的高度自然匹配不上原來的寬度 img