利用ImageOps调整图片的Aspect Ratio(给图片添加borders)
# -*- coding: utf-8 -*- #******************** # 改变图片的纵横比(aspect retio) # 使用ImageOps.expand() # ImageOps.expand(img,border=300,fill='black') # border :四个border的宽度一致时,border是宽度 # ImageOps.expand(img,(4,4,8,8),fill='white') # (4,4,8,8) ---> left, top, right and bottom borders. # 4--left:表示左上角像素点距最终图左边的像素宽度 ---左边border的宽度 # 4--top:表示左上角像素点距最终图上边的像素宽度 --- 上边border的宽度 # 8--right:表示右下角像素点距最终图右边的像素宽度 --- 右边border的宽度 # 8--bottom:表示右下角像素点距最终图下边的像素宽度 --- 下面border的宽度 #******************** from PIL import Image,ImageOps path = 'C:/Users/mengyi/Desktop/1.jpg' path_save = 'C:/Users/mengyi/Desktop/2_broder.jpg' img = Image.open(path) #print img.size #img_with_border = ImageOps.expand(img,(4,4,4,4),fill='white') img_with_border = ImageOps.expand(img,border=4,fill='white') #print img_with_border.size img_with_border.save(path_save) img_with_border.show()
使用PIL模块下的ImageOps.expand()函数完成
1. img_with_border = ImageOps.expand(img,(4,4,4,4),fill='white')
当以(left,top,right,bottom)参数添加border宽度时,各个border的宽度可以是不一样的。
2. img_with_border = ImageOps.expand(img,border=4,fill='white')
当以 border的方式添加border宽度时,各个border的宽度是一致的。
下图依次是 原图,border = 20,以及(left,top,right,bottom) = (40,20,70,100)(fill = 'white')