将多张图片缩小合为一张图片(千图成像)
将多张图片缩小合为一张图片(千图成像)
参考博文:
千图成像!祝可爱的小伙伴们圣诞快乐
修改点:
1.由于很多图片纯色的地方比较多,所以容易有大量相同图片扎堆的现象。此处获取与像素点最相似的5张图片,然后采取随机的方式获取并填充
2.爬虫程序有所修改,爬取的是百度图片的相关内容,见我的另一篇博文
程序结果:
1.原背景图片,大小为360×360
2.现N = 2,M= 60 所以新图的大小为10800×10800(360/2*60 =10800)
3.最后完成的效果图(当然图片清晰度不高,若想让图片更清楚,可以减小N值):
4.局部放大效果:
完整程序:
'''
程序流程:
1.计算每张图片的RGB
2.获取每张图片字典,{'path':path,'RGB':color},并汇总 RGB为3元列表
3.重新设定图片大小
4.计算像素点与所有图片的距离(通过两个RGB计算),并找出与当前像素点距离最小的5张图片在文件夹中的位置
5.从5张中随机选取1张,将其放入新图片的对应位置
6保存
'''from PIL import Image
import numpy as np
import os
import random
import timedef compute_mean(imgPath):'''计算图片的平均(R,G,B)'''img = Image.open(imgPath)img = img.convert('RGB')imgArray = np.array(img)R = np.mean(imgArray[:,:,0])G = np.mean(imgArray[:,:,1])B = np.mean(imgArray[:,:,2])return (R,G,B)def get_imgList(imgDir):'''获取图片列表(图片目录及平均颜色)'''imgList = []for imgName in os.listdir(imgDir):path = imgDir+imgName#计算每张图片的RGBcolor = compute_mean(path)imgList.append({'path':path,'RGB':color})return imgListdef compute_distance(color1, color2):'''计算两张图的颜色差'''dis = 0#print(len(color1)) 3for i in range(len(color1)):dis += (color1[i]-color2[i])**2dis = dis**0.5return disdef create_image(bgImg,imgDir,N=2,M=200):'''根据背景图,用头像填充出新图bgImg:背景图地址imgDir:头像目录N:背景图缩放的倍率M:头像的大小(MxM)'''# 获取图片列表imgList = get_imgList(imgDir)# 读取背景图bg = Image.open(bgImg)#重设背景图片大小bg = bg.resize((bg.size[0]//N,bg.size[1]//N)) # 缩放bgArray = np.array(bg)width = bg.size[0]*M # 新生成图片的宽度height = bg.size[1]*M # 新生成图片的高度# 创建空白的新图newImg = Image.new('RGB',(width,height))# 逐个像素点循环填充图for x in range(bgArray.shape[0]):for y in range(bgArray.shape[1]):##dis_list = []dis_dic = {}for img in imgList:#计算每张图片与当前图片像素距离dis = compute_distance(img['RGB'],bgArray[x][y])#将距离存入listdis_list.append(dis)#将距离与路径一一对应存入字典a = img['path']dis_dic.update({a:dis})#对距离排序dis_list.sort()#将与当前像素距离最近的5张图片的地址放入列表pick = [i for i,j in dis_dic.items() if j==dis_list[0] or j==dis_list[1] or j==dis_list[2] or j==dis_list[3] or j==dis_list[4] ]## 在5张图片中随机选取1张进行填充tempImg = Image.open(random.choice(pick))tempImg = tempImg.resize((M,M))newImg.paste(tempImg,(y*M,x*M))print('(%d, %d)'%(x,y))# 保存图片newImg.save('千图成像.jpg')time_start = time.time()
create_image('fighting.jpeg','./image/',N=2,M=60)
time_end = time.time()
print('共计耗时{}秒'.format(str(time_end-time_start)))
将多张图片缩小合为一张图片(千图成像)相关推荐
- python千人成像_Python实现千图成像:从图片爬取到图片合成
千图成像:用N张图片拼凑成一张图片. 实现原理:先将所要成像的图片转化成马赛克图片,然后从图库中用对应颜色的图片替换相应色块. 图库中的图片处理:标记图库中每张图片的混合颜色,用于替换目标色块,并记录 ...
- Python---如何实现千图成像:初级篇(从图片爬取到图片合成)
千图成像:用N张图片拼凑成一张图片. 实现原理:先将所要成像的图片转化成马赛克图片,然后从图库中用对应颜色的图片替换相应色块. 图库中的图片处理:标记图库中每张图片的混合颜色,用于替换目标色块,并记录 ...
- python 爬取图片_Python实现千图成像:从图片爬取到图片合成
千图成像:用N张图片拼凑成一张图片. 实现原理:先将所要成像的图片转化成马赛克图片,然后从图库中用对应颜色的图片替换相应色块. 图库中的图片处理:标记图库中每张图片的混合颜色,用于替换目标色块,并记录 ...
- python 透明图片合成_Python实现千图成像:从图片爬取到图片合成
千图成像:用N张图片拼凑成一张图片. 实现原理:先将所要成像的图片转化成马赛克图片,然后从图库中用对应颜色的图片替换相应色块. 图库中的图片处理:标记图库中每张图片的混合颜色,用于替换目标色块,并记录 ...
- ps入门第20天_ps批处理_ps动作的编辑与创建 案例:千图成像
一前言 二操作步骤 1.录制动作 ①窗口---动作---创建文件夹 ②创建新动作---命名 ③点击开始记录 ④点击裁剪---按住shift---裁剪出正方形 ⑤文件---存储为 找个任意的文件夹存放即 ...
- 爬取英雄联盟所有皮肤图片实现千图成像~
前文 本文主要分为两个部分 一部分是爬虫,这边是选择爬取英雄联盟官网英雄资料中的英雄皮肤图片,如下为新英雄seraphine的页面,包含英雄对应的所有皮肤: 另一部分是图片的合成,先将所有英雄皮肤图片 ...
- 【Python爬虫】爬取英雄联盟所有皮肤图片实现千图成像~
前文 本文主要分为两个部分 一部分是爬虫,这边是选择爬取英雄联盟官网英雄资料中的英雄皮肤图片,如下为新英雄seraphine的页面,包含英雄对应的所有皮肤: 另一部分是图片的合成,先将所有英雄皮肤图片 ...
- Matplotlib、PIL Image如何将多张图片整合保存为一张图片
目录 1. 法一:生成多行多列图 2. 法二:生成单行/单列图 在这篇文章中介绍了如何生成多张图,但是很多时候我们需要将图片综合对比展示,因此需要合并在一张图里. 以下给了2种方法:法一是通常展示 ...
- 千图成像_「原创」千图成像,用PS给人物制作全图的拼人像
本篇教程要制作一种马赛克效果的拼图,但又不是单纯的马赛克,中间还会有若隐若现的人像,整体看上去很高级,发朋友圈引来很多赞的那种,制作起来也是很简单,是那种只要你动手,就可以学会的那种,很有效果,很好学 ...
- 《Python 黑科技》10万粉丝头像千图成像(撩对象)
点赞 ➕ 评论 ➕ 收藏 = 三连再看你最帅 目录
最新文章
- torch 特征对齐
- 51nod 1499 (最小割)
- 自动检测CSRF漏洞的工具
- Android官方开发文档Training系列课程中文版:通过NFC共享文件之发送文件到另一台设备
- CCF201409-3 字符串匹配(解法二)(100分)(废除!!!)
- Kotlin — 编程语言
- TCP/IP、IPX/SPX、NETBEUI常识
- 《惢客创业日记》2021.02.01(周一)饺子就酒
- Android自定义消息推送
- EasyCVR接入华为视频云系统查询集群编码和查询网关
- 怎样让机器有人类思维
- js获取地理位置的经纬度
- Pyinstaller Pmw
- OKR目标与关键结果法
- 用Excel曲面图做等高线图(仿罗兰贝格消费者价值体系图)
- ABB KUC321AE HIEE300698R0001、KUC755AE106 3BHB005243R0106、KUC711AE 3BHB004661R0001、KUC720AE01
- 电脑越用越卡想清又不敢删?搞懂这些文件夹,一键删除省出几个G
- [DAY003]考研数学极限的计算知识点与题目总结(三)
- RVIZ 的菜单背景变成黑色
- 谷歌大牛Jeff Dean是如何成为互联网战神的