如何使用Python Pillow将图片居中合并到另一张图片中?
实现图片居中合并的Pillow代码修改
要让im2在im1中完美居中,核心是动态计算粘贴坐标,而非使用硬编码的固定值。具体实现步骤如下:
- 获取两张图片的宽高尺寸
- 计算居中偏移量:
- x坐标 = (背景图宽度 - 前景图宽度) // 2
- y坐标 = (背景图高度 - 前景图高度) // 2
- 用计算出的坐标执行粘贴操作
修改后的完整代码:
from PIL import Image im1 = Image.open('image1.png') im2 = Image.open('image2.png') back_im = im1.copy() # 计算居中坐标 x = (im1.width - im2.width) // 2 y = (im1.height - im2.height) // 2 back_im.paste(im2, (x, y)) back_im.save('newimg.png', quality=95)
补充说明
- 使用整数除法
//是因为图片坐标必须为整数 - 如果
im2尺寸大于im1,计算出的x/y会是负数,此时im2会从左上角超出im1范围,仅显示部分内容。若需适配这种场景,可先缩放im2:
# 示例:将im2缩放到不超过im1的尺寸 scale = min(im1.width / im2.width, im1.height / im2.height) new_size = (int(im2.width * scale), int(im2.height * scale)) im2_resized = im2.resize(new_size) # 重新计算居中坐标 x = (im1.width - im2_resized.width) // 2 y = (im1.height - im2_resized.height) // 2 back_im.paste(im2_resized, (x, y))
内容的提问来源于stack exchange,提问作者Daniel
相关产品推荐
相关产品推荐

