w_num = 5
h_num = int(len(imgs)/w_num) + 1
UNIT_SIZE = 200 # 一张图的大小是200*200
target_shape = (w_num * (UNIT_SIZE + 10), h_num * (UNIT_SIZE + 10)) # shape[0]表示横坐标,shape[1]表示纵坐标
target = Image.new('RGB', target_shape)
width = 0
print(target_shape)
for img in imgs:
x, y = int(width%target_shape[0]), int(width/target_shape[0])*(UNIT_SIZE+10) # 左上角坐标,从左到右递增
target.paste(Image.open(osp.join(task, img)).resize((UNIT_SIZE, UNIT_SIZE)), (x, y, x+UNIT_SIZE, y+UNIT_SIZE))
width += (UNIT_SIZE+10)
target.save(osp.join('of_vis', task.split('/')[-1]+'.jpg'))
以上是从一个小项目摘下来的python PIL图片拼接代码,实现的功能是将若干张图片拼接到一张大图,该图固定5列,图片之间加了10个像素点的间隔。
PIL Image的shape中第一个坐标表示宽度,第二个坐标表示高度。