python PIL/Pillow图像扩展、复制、粘贴处理

时间:2022-06-29 16:53:36

遇到这么一个问题:
给自己的CSDN博客修改头像,头像必须是正方形图片,但我找了个长方形图片,那么问题来了,怎么把长方形图片修改成正方形图片。

注:
1、不想拉伸图片,这样会使图片失真。
2、不想用PS(当然我知道用PS处理应该会很简单,但是我就不用,因为我不会。。。))

言归正传,通过网上查资料,终于找到了方法。

直接解释代码:

#-*- coding: utf-8 -*-

from PIL import Image

# 创建需要修改的图片对象
img1 = Image.open('.\heben.jpg')
# 创建一个新的图片对象
img2 = Image.new('RGB', (402, 402), (0, 0, 0))
# 圈出需要复制的图片框(这里其实是复制img整个图片)
box1 = (0, 0, 268, 402)
# 按圈出的框复制图片
region = img1.crop(box1)
# 很多文档都有这一步, 这一步其实是为了显示图片被复制了,将复制的图片框旋转显示,具体旋转的情况,可以参见:http://hereson.iteye.com/blog/2224334
# region = region.transpose(Image.FLIP_TOP_BOTTOM)
# 粘贴图片(注意粘贴图片的位置,是从图片2的中间开始粘贴的)
img2.paste(region, (67, 0))
# 保存图片2
img2.save('heben_new.jpg')

注:
crop函数带的参数为(起始点的横坐标,起始点的纵坐标,宽度,高度)
paste函数的参数为(需要修改的图片,粘贴的起始点的横坐标,粘贴的起始点的纵坐标)

具体Pillow模块的其它用法,可以网上查,比如:http://www.cnblogs.com/apexchu/p/4231041.html
但是需要注意一点:这类用法在看时最好能结合实践,否则这种图片类的操作,光看是很难理解的。