前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >多张图片合成到一张大图

多张图片合成到一张大图

作者头像
一朵灼灼华
发布2022-08-05 21:19:49
9600
发布2022-08-05 21:19:49
举报
文章被收录于专栏:一朵灼灼华的博客

情景概要

老大让把某个时间段的用户做成头像墙,还要做成某个特定形状的,如缩略图,那好吧,搞起来

代码

代码语言:javascript
复制
# -*- coding:utf-8 -*-
import random
import PIL.Image as Image
import os

IMAGES_PATH = './img/'  # 头像目录
IMAGES_FORMAT = ['.png']  # 图片格式
IMAGE_SIZE = 256  # 每张小图片的大小
# 大图的行列,乘积不能超过图片的数量!
IMAGE_ROW = 30
IMAGE_COLUMN = 30
# 输出路径
IMAGE_SAVE_PATH = './avatar/'

image_names = [name for name in os.listdir(IMAGES_PATH) for item in IMAGES_FORMAT if os.path.splitext(name)[1] == item]


# 图像拼接函数
def image_compose():
    for i in range(1, int(len(image_names) / (IMAGE_ROW * IMAGE_COLUMN)) + 1):
        to_image = Image.new('RGB', (IMAGE_COLUMN * IMAGE_SIZE, IMAGE_ROW * IMAGE_SIZE))
        for y in range(1, IMAGE_ROW + 1):
            for x in range(1, IMAGE_COLUMN + 1):
                from_image = Image.open(IMAGES_PATH + image_names[(i - 1) * IMAGE_ROW * IMAGE_COLUMN + IMAGE_COLUMN * (y - 1) + x - 1]).resize((IMAGE_SIZE, IMAGE_SIZE), Image.ANTIALIAS)
                to_image.paste(from_image, ((x - 1) * IMAGE_SIZE, (y - 1) * IMAGE_SIZE))
        to_image.save(IMAGE_SAVE_PATH + str(random.random()) + ".png")

if __name__ == '__main__':
    image_compose()

效果图

然后,然后,然后组成的形状呢?? 抱歉,暂时没实现! 上面只是初级的代码,只好先用PS调一下吧,后面有时间再研究更多更复杂的功能。 如果读者有更快更好的算法,欢迎赐教!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-11-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 情景概要
  • 代码
  • 效果图
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档