Python圖片裁剪實例代碼(如頭像裁剪)
阿新 • • 發佈:2018-10-17
cin follow comm 都是 {} pill 左旋轉 light 頭像裁剪
?
轉載地址:https://www.jb51.net/article/116789.htm
1. 安裝pillow
用pip安裝
?1 |
pip install pillow
|
2. 圖片裁剪
2.1 準備一張圖片
2.2 我們使用的是Image中的crop(box)功能,它需要一個參數box,元組 類型,元組包括4個元素,如:
(距離圖片左邊界距離x, 距離圖片上邊界距離y,距離圖片左邊界距離+裁剪框寬度x+w,距離圖片上邊界距離+裁剪框高度y+h)
如圖:(x, y, x+w, y+h), x,y是裁剪框左上角的坐標, x+w,y+h是右下角的坐標
2.3 上代碼1-裁剪:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
# -*-coding:utf-8-*-
from PIL import Image
im = Image. open ( "renren.jpeg" )
# 圖片的寬度和高度
img_size = im.size
print ( "圖片寬度和高度分別是{}" . format (img_size))
‘‘‘
裁剪:傳入一個元組作為參數
元組裏的元素分別是:(距離圖片左邊界距離x, 距離圖片上邊界距離y,距離圖片左邊界距離+裁剪框寬度x+w,距離圖片上邊界距離+裁剪框高度y+h) ‘‘‘
# 截取圖片中一塊寬和高都是250的
x = 100
y = 100
w = 250
h = 250
region = im.crop((x, y, x + w, y + h))
region.save( "./crop_test1.jpeg" )
# 截取圖片中一塊寬是250和高都是300的
x = 100
y = 100
w = 250
h = 300
region = im.crop((x, y, x + w, y + h))
region.save( "./crop_test2.jpeg" )
|
運行結果:
(venv) allenwoo@~/renren/code$ python test.py
圖片寬度和高度分別是(500, 500)
2.4 上代碼2-平均切割成4塊:
?1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
# 把圖片平均分成4塊
# 第1塊
w = img_size[ 0 ] / 2.0
h = img_size[ 1 ] / 2.0
x = 0
y = 0
region = im.crop((x, y, x + w, y + h))
region.save( "./crop_average-1.jpeg" )
# 第2塊
x = w
y = h
region = im.crop((x, y, x + w, y + h))
region.save( "./crop_average-2.jpeg" )
# 第3塊
x = 0
y = h
region = im.crop((x, y, x + w, y + h))
region.save( "./crop_average-3.jpeg" )
# 第4塊
x = w
y = 0
region = im.crop((x, y, x + w, y + h))
region.save( "./crop_average-4.jpeg" )
|
運行結果:
2.5 上代碼3-旋轉圖片:
?1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
# 旋轉圖片
# 左旋轉45度
im = im.rotate( 45 )
im.save( "./rotate-l45.jpeg" )
# 右旋轉30度
im = im.rotate( - 30 )
im.save( "./rotate-r30.jpeg" )
# 右旋轉45度, 並裁剪一塊
im = im.rotate( - 30 )
x = 50
y = 50
w = 150
h = 150
region = im.crop((x, y, x + w, y + h))
region.save( "./rotate-r30-crop.jpeg" )
|
運行結果:
好了,到這裏你完全可以做個頭像裁剪了的後端操作了。
Python圖片裁剪實例代碼(如頭像裁剪)