Python圖片裁剪實例代碼(如頭像裁剪)


轉載地址: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" )

運行結果:

好了,到這里你完全可以做個頭像裁剪了的后端操作了。


免責聲明!

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



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