python利用PIL拼接图片(九宫格)

有一个需求

九张图片拼接在一起,图片类型有P类型(索引图)、灰度图、RGB、RGBA类型
九张图片
在这里插入图片描述

代码如下

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规整、放置位置

效果展示

在这里插入图片描述

  • 3
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值