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
相关产品推荐
相关产品推荐

