python PIL 将两个图片合成一张

  • Post author:
  • Post category:python


1.首先你需要有两张图片,可以是现有的,也可以是创建的照片

2.合成图片的方法有很多,我只提供我的idea

3.idea:将多个图片粘贴在一张大图上,提前预设出大图的大小和粘贴图的坐标

from PIL import Image

# 加载第一张图片
im = Image.open("G:\\project\\新建文件夹\\92542485_p0.png")
# 获取图片的长宽
x, y = im.size
# Image.resize()返回此图像的调整大小后的副本,按照等比例缩小为 x:1024,y:int(1024/x*y)👇
im = im.resize((520,int(520/x*y)),Image.ANTIALIAS) # 对图片的大小进行调整
# 参数解析:
# (520,int(520/x*y) 对应需要调整的长和宽
# 第二个参数Image.ANTIALIAS解析如下:
# Image.NEAREST :低质量
# Image.BILINEAR:双线性
# Image.BICUBIC :三次样条插值
# Image.ANTIALIAS:高质量
im.show() 
# 如图👇

这是原图

这是调整大小后的图片

# 同理加载第二张图片
im = Image.open("G:\\project\\新建文件夹\\00002321_p0.png")
# 获取图片的长宽
x, y = im.size
# Image.resize()返回此图像的调整大小后的副本,按照等比例缩小为 x:1024,y:int(1024/x*y)👇
im = im.resize((520,int(520/x*y)),Image.ANTIALIAS) # 对图片的大小进行调整
im.show() 
# 如图👇

这是原图

这是调整大小后的图

# 最后呢我们在创建一个长宽适合两张图片大小的图
image = Image.new('RGB', (520, int(520/x0*y0)+int(520/x1*y1)), (255,0,0))
image.paste(im,(0,0)) 
image.paste(img,(0,int(520/x0*y0)))
# .paste复制粘贴的效果
# 参数解析:
# 第一个参数表示被粘贴的图片(im and img)
# 第二次参数表示粘贴图片的定位点(每张的图左上角都为(0,0))可以用ps软件查看图片的坐标位置!

image.show()
# 如图👇