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的異同

  • 相同點:兩者都接受元組(寬,高)作爲新圖片的大小;
  • 不同點:
    1. thumbnail是快速生成縮略圖的方法,img.thumbnail()直接在img上操作,不可逆;new_img = img.resize(),resize方法會生成一個新的PIL對象並返回
    2. thumbnail生成縮略圖是按比例縮放的;而resize是完全按照給定的元組的大小縮放
    3. 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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章