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

Python合并等尺寸图片:如何将第二张图粘贴至第一张图右侧?

如何使用PIL将两张等尺寸图片横向拼接(右侧粘贴第二张)?

我来帮你搞定这个问题~你的整体思路是对的,只需要调整paste()方法的位置参数,就能把第二张图片精准贴到第一张的右侧。另外注意你代码里有个小笔误:打印图片2尺寸的时候误用了图片1的宽高变量,得修正一下哦。

问题代码回顾

import PIL
from PIL import Image as img
x = img.open('index.jpg')
w1, h1 = x.size
print('图片1尺寸 =',w1,'x',h1)
y = img.open('index2.jpg')
w2, h2 = y.size
print('图片2尺寸 =',w1,'x',h1)  # 这里有笔误,应该用w2和h2
if x.size == y.size :
    print('两张图片尺寸相等。')
    height = max(h1,h2)
    width = w1 + w2
    z = img.new("RGB",(width,height))
    z.paste(x)
    #z.paste(y)
    z.show()
else:
    print('两张图片尺寸不相等。')

修改后的完整代码

import PIL
from PIL import Image as img

# 打开并获取两张图片的尺寸
x = img.open('index.jpg')
w1, h1 = x.size
print('图片1尺寸 =', w1, 'x', h1)

y = img.open('index2.jpg')
w2, h2 = y.size
print('图片2尺寸 =', w2, 'x', h2)  # 修正笔误

if x.size == y.size :
    print('两张图片尺寸相等。')
    # 因为尺寸一致,直接用单张的高度即可,宽度为两者之和
    width = w1 + w2
    height = h1
    # 创建空白的拼接画布
    z = img.new("RGB", (width, height))
    # 把第一张图片贴到画布左上角(0,0)位置
    z.paste(x, (0, 0))
    # 把第二张图片贴到第一张的右侧,起始x坐标为第一张的宽度w1,y坐标保持0对齐
    z.paste(y, (w1, 0))
    z.show()
else:
    print('两张图片尺寸不相等。')

关键修改说明

  • paste()方法默认将图片粘贴到目标画布的(0, 0)位置,所以第二张图片需要指定起始位置为(w1, 0):x坐标取第一张图片的宽度,刚好接在右侧;y坐标设为0,和第一张保持垂直对齐。
  • 既然已经判断两张图片尺寸相等,height直接用h1或h2就行,不用再调用max(h1,h2)(当然保留也不影响,只是更简洁)。
  • 修正了打印图片2尺寸的笔误,避免输出错误的尺寸信息。

这样修改后就能完美实现两张等尺寸图片的横向拼接啦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 08:29:07