利用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')


原文地址:https://www.cnblogs.com/muzixi/p/6433170.html