使用Python叠加两张39200x30288图片出现AttributeError如何解决
问题原因
PIL库的Image.paste()方法是原地修改图像对象的操作,不会返回新的Image实例,默认返回值为None。你执行image_1 = image_1.paste(image_2, (0,0))时,把原本的Image对象覆盖成了None,后续调用.size属性自然会触发AttributeError。
修复方案
直接去掉赋值操作即可,paste操作会直接修改image_1的内容,不需要重新赋值:
from PIL import Image # 解除大图像像素限制 Image.MAX_IMAGE_PIXELS = None image_1 = Image.open(r"1.png") image_2 = Image.open(r"2.png") # 直接调用paste,不需要赋值给image_1 image_1.paste(image_2, (0,0)) print(image_1.size)
补充注意事项
- 如果需要保留原始的
1.png不被修改,可以先拷贝一份原始图像再执行paste操作:image_1 = Image.open(r"1.png").copy() - 两张超大幅图像叠加时建议确认图像模式一致(比如都是RGBA或者都是RGB),如果存在alpha通道需要特殊叠加效果,可以改用
alpha_composite方法替代paste。
内容的提问来源于stack exchange,提问作者bledkharm
相关产品推荐
相关产品推荐

