【python拼图】遍历文件夹后,自动拼接图像成正方形图,或者指定行数显示

news/2024/11/23 3:17:20/

在这里插入图片描述

功能说明

def image_combines(img_dir,fw=1,fh=1,cols=1,flag_sort=True,IMAGES_FORMAT = ['.jpg', '.JPG', 'PNG', '.png', '.jpeg']):
'''
img_dir 表示需要遍历文件夹
fw,fh 分别表示图像宽、高统一放缩的比例,1表示1倍
cols 表示拼接后的图片的每行多少张小图片(多少列),cols=0时,自动按照平方根拼接
flag_sort=True  路径按字符串顺序排列,防止每次图片位置不一样
'''

代码

def image_combines(img_dir,fw=1,fh=1,cols=0,flag_sort=True,IMAGES_FORMAT = ['.jpg', '.JPG', 'PNG', '.png', '.jpeg']):IMAGES_PATH=img_dirimg_paths=[]for cur_dir,folders,files in os.walk(IMAGES_PATH):for name in files:if name.endswith(tuple(IMAGES_FORMAT)):path=os.path.join(cur_dir,name)img_paths.append(path)# image_names = [name for name in (os.listdir(IMAGES_PATH)) for item in IMAGES_FORMAT if#                os.path.splitext(name)[1] == item]if flag_sort:img_paths.sort()print('img_paths',img_paths)n_imgs=len(img_paths)# 向上取整 方图squrt=math.ceil(math.sqrt(n_imgs))print("n_imgs",n_imgs)print("squrt",squrt)# 如果不指定图片的列数,就需要if cols!=0:IMAGE_COLUMN=colselse:IMAGE_COLUMN =squrt # 图片间隔,也就是合并成一张图后,一共有几列IMAGE_ROW = n_imgs//IMAGE_COLUMN # 图片间隔,也就是合并成一张图后,一共有几行if n_imgs%IMAGE_COLUMN!=0:IMAGE_ROW+=1print("IMAGE_ROW,IMAGE_c",IMAGE_ROW,IMAGE_COLUMN)# https://blog.csdn.net/weixin_44548693/article/details/104125989src_w,src_h=Image.open(img_paths[0]).sizeIMAGE_X_SIZE=int(src_w*fw)IMAGE_Y_SIZE=int(src_h*fh)print("IMAGE_X_SIZE,IMAGE_c",IMAGE_X_SIZE,IMAGE_X_SIZE)to_image = Image.new('RGB', (IMAGE_COLUMN * IMAGE_X_SIZE, IMAGE_ROW * IMAGE_Y_SIZE))  # 创建一个新图# 循环遍历,把每张图片按顺序粘贴到对应位置上i=0for y in range(1, IMAGE_ROW + 1):for x in range(1, IMAGE_COLUMN + 1):if i>=n_imgs:breakimg_path=img_paths[i]from_image = Image.open(img_path).resize((IMAGE_X_SIZE, IMAGE_Y_SIZE), Image.ANTIALIAS)# from_image = Image.open(os.path.join(IMAGES_PATH , image_names[IMAGE_COLUMN * (y - 1) + x - 1])).resize((IMAGE_X_SIZE, IMAGE_Y_SIZE), Image.ANTIALIAS)to_image.paste(from_image, ((x - 1) * IMAGE_X_SIZE, (y - 1) * IMAGE_Y_SIZE))i+=1return to_imageif __name__ == '__main__':test=r'your_imge_dir'to_image=image_combines(test,fw=0.5,fh=0.5,cols=5)to_image.save('./test.png')# 没有指定列cols,将自动计算列参数to_image=image_combines(test,fw=0.5,fh=0.5)to_image.save('./test_squra.png')

自动计算列宽拼接结果
在这里插入图片描述


http://www.ppmy.cn/news/840801.html

相关文章

Python案例分析|基于模块的库存管理系统

本案例是通过一个多模块的库存管理系统案例,帮助大家深入了解基于模块的Python应用程序的开发流程。 01、库存管理系统API设计 本文实现一个简单的基于模块的库存管理系统。系统采用JSON文件来保存数据。产品信息设计为字典,键为sku_id(产品…

矩阵的范数和特征值之间的关系

参考: linear algebra - Why is the norm of a matrix larger than its eigenvalue? - Mathematics Stack Exchange

web信息收集----网站指纹识别

文章目录 一、网站指纹(web指纹)二、CMS简介三、指纹识别方法3.1 在线网站识别3.2 工具识别3.3 手动识别3.4 Wappalyzer插件识别 一、网站指纹(web指纹) Web指纹定义:Web指纹是一种对目标网站的识别技术,通…

苦学3个月,拿下阿里、腾讯、美团、京东等众多大厂的Offer(Java岗)

已经苦学三个月的小李,一举拿下众多大厂Offer,对得起这三个月的努力,下面小编就和大家唠叨唠叨,这三个月,他到底学了啥? 以下提及到的所有的笔记内容、面试题、简历等资料,均可以在公众号【退休…

学学怎样买车,与我一样不懂车的人分享

当你确定了要买的车型之后。首先要选定一家经销商。在这方面一定要找大经销商。一方面大经销商手里的车多,你又挑选的余地,另外大经销商往往产品周转得快。你能买到刚出场的产品。当然,对于一些货源不足的品牌大经销商的进货渠道能帮助你尽早…

私家车的养车秘籍

1、润滑油不买贵的      汽车行驶5000公里基本上就需要换润滑油了。一年行驶7万—8万公里的车要换七八瓶油,这不是一笔可以 忽略不计的开支。但现在润滑油品牌太多,不少车主分不清品牌,干脆就选进口油,名牌油了事,…

养车族可节省的13笔血汗钱(不必要的花费)

目前,市场上有多种不同标号的汽油,汽油的使用是否符合标准对于汽车的保养有着密切的关系。大多数车主选择价格便宜的低标号汽油,一般车主都知道如果高档轿车长期使用低标号汽油,除了会产生爆震外,还会连锁产生诸如功率…

工薪族买车注意事项

[more] 一、买车的价位最好不要超过家庭两年的收入。二、买车别攀比,因为金钱有限,好车无限。三、强劲的发动机在现阶段任何大城市的城区都无用武之地。四、如果不是成熟车型,新推的车型应缓买。五、家庭购车一定要考虑空间。六、无用的功能和…