有一个需求

九张图片拼接在一起,图片类型有P类型(索引图)、灰度图、RGB、RGBA类型

九张图片

九宫格python代码 九宫格拼图代码_图像处理

代码如下

import glob
from PIL import Image

def image_concat(image_names):
    """ image_names: list, 存放的是图片的绝对路径 """
    # 1.创建一块背景布
    image = Image.open(image_names[0])
    width, height = image.size
    target_shape = (3*width, 3*height)
    background = Image.new('RGBA', target_shape, (0,0,0,0,))

    # 2.依次将图片放入背景中(注意图片尺寸规整、mode规整、放置位置)
    for ind, image_name in enumerate(image_names):
        img = Image.open(image_name)
        img = img.resize((width, height))  # 尺寸规整
        if img.mode != "RGBA":             # mode规整
            img = img.convert("RGBA")
        row, col = ind//3, ind%3
        location = (col*width, row*height) # 放置位置
        background.paste(img, location)
    background.save("./cartoon_common_test3.png")

img_dir = "./test/"
image_names = sorted(glob.glob(img_dir+"*"))
image_concat(image_names)

实现方法

1.读入所有图片名称
2.创建一块背景布
3.依次将图片放入背景中
注意:图片尺寸规整、mode规整、放置位置

效果展示

九宫格python代码 九宫格拼图代码_灰度图_02