You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用PIL将小图粘贴至大背景图的报错问题求助

问题分析与解决方法

你的代码存在两个核心错误,导致了ValueError: images do not match:

  1. 粘贴对象搞反:你试图把1024x1024的背景图image1贴到184x184的小图image2的区域里,尺寸完全不匹配;实际应该是把小图image2粘贴到背景图image1上。
  2. Mask尺寸错误:你把mask图缩放到了背景图的1024x1024尺寸,但mask的尺寸需要和被粘贴的小图image2(184x184)一致,才能正确对应透明区域。

正确代码实现

from PIL import Image

# 打开背景图(1024x1024)
image1 = Image.open('fab.png')
# 打开小图(184x184)
image2 = Image.open('pfp.png')
# 打开mask图并调整尺寸与小图一致
maskimg = Image.open('mask2.png').resize(image2.size)

# 在背景图的指定位置(示例为左上角(0,0))粘贴小图,使用mask
# 若要居中放置,可替换坐标为:( (1024-184)//2, (1024-184)//2 )
image1.paste(image2, (0, 0), mask=maskimg)

# 保存合并后的图片
image1.save('merged_image.png')

额外说明

  • 如果你的mask2.png本来就是184x184的尺寸,可以直接去掉.resize(image2.size)这一步。
  • 粘贴位置的坐标可按需自定义,只要确保小图完全处于背景图范围内即可。

内容的提问来源于stack exchange,提问作者Orion

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 23:05:04