将多张图片缩小合为一张图片(千图成像)

参考博文:
千图成像!祝可爱的小伙伴们圣诞快乐

修改点:

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)))

将多张图片缩小合为一张图片(千图成像)相关推荐

  1. python千人成像_Python实现千图成像:从图片爬取到图片合成

    千图成像:用N张图片拼凑成一张图片. 实现原理:先将所要成像的图片转化成马赛克图片,然后从图库中用对应颜色的图片替换相应色块. 图库中的图片处理:标记图库中每张图片的混合颜色,用于替换目标色块,并记录 ...

  2. Python---如何实现千图成像:初级篇(从图片爬取到图片合成)

    千图成像:用N张图片拼凑成一张图片. 实现原理:先将所要成像的图片转化成马赛克图片,然后从图库中用对应颜色的图片替换相应色块. 图库中的图片处理:标记图库中每张图片的混合颜色,用于替换目标色块,并记录 ...

  3. python 爬取图片_Python实现千图成像:从图片爬取到图片合成

    千图成像:用N张图片拼凑成一张图片. 实现原理:先将所要成像的图片转化成马赛克图片,然后从图库中用对应颜色的图片替换相应色块. 图库中的图片处理:标记图库中每张图片的混合颜色,用于替换目标色块,并记录 ...

  4. python 透明图片合成_Python实现千图成像:从图片爬取到图片合成

    千图成像:用N张图片拼凑成一张图片. 实现原理:先将所要成像的图片转化成马赛克图片,然后从图库中用对应颜色的图片替换相应色块. 图库中的图片处理:标记图库中每张图片的混合颜色,用于替换目标色块,并记录 ...

  5. ps入门第20天_ps批处理_ps动作的编辑与创建 案例:千图成像

    一前言 二操作步骤 1.录制动作 ①窗口---动作---创建文件夹 ②创建新动作---命名 ③点击开始记录 ④点击裁剪---按住shift---裁剪出正方形 ⑤文件---存储为 找个任意的文件夹存放即 ...

  6. 爬取英雄联盟所有皮肤图片实现千图成像~

    前文 本文主要分为两个部分 一部分是爬虫,这边是选择爬取英雄联盟官网英雄资料中的英雄皮肤图片,如下为新英雄seraphine的页面,包含英雄对应的所有皮肤: 另一部分是图片的合成,先将所有英雄皮肤图片 ...

  7. 【Python爬虫】爬取英雄联盟所有皮肤图片实现千图成像~

    前文 本文主要分为两个部分 一部分是爬虫,这边是选择爬取英雄联盟官网英雄资料中的英雄皮肤图片,如下为新英雄seraphine的页面,包含英雄对应的所有皮肤: 另一部分是图片的合成,先将所有英雄皮肤图片 ...

  8. Matplotlib、PIL Image如何将多张图片整合保存为一张图片

    目录 1.  法一:生成多行多列图 2.  法二:生成单行/单列图 在这篇文章中介绍了如何生成多张图,但是很多时候我们需要将图片综合对比展示,因此需要合并在一张图里. 以下给了2种方法:法一是通常展示 ...

  9. 千图成像_「原创」千图成像,用PS给人物制作全图的拼人像

    本篇教程要制作一种马赛克效果的拼图,但又不是单纯的马赛克,中间还会有若隐若现的人像,整体看上去很高级,发朋友圈引来很多赞的那种,制作起来也是很简单,是那种只要你动手,就可以学会的那种,很有效果,很好学 ...

  10. 《Python 黑科技》10万粉丝头像千图成像(撩对象)

    点赞 ➕ 评论 ➕ 收藏 = 三连再看你最帅 目录

最新文章

  1. torch 特征对齐
  2. 51nod 1499 (最小割)
  3. 自动检测CSRF漏洞的工具
  4. Android官方开发文档Training系列课程中文版:通过NFC共享文件之发送文件到另一台设备
  5. CCF201409-3 字符串匹配(解法二)(100分)(废除!!!)
  6. Kotlin — 编程语言
  7. TCP/IP、IPX/SPX、NETBEUI常识
  8. 《惢客创业日记》2021.02.01(周一)饺子就酒
  9. Android自定义消息推送
  10. EasyCVR接入华为视频云系统查询集群编码和查询网关
  11. 怎样让机器有人类思维
  12. js获取地理位置的经纬度
  13. Pyinstaller Pmw
  14. OKR目标与关键结果法
  15. 用Excel曲面图做等高线图(仿罗兰贝格消费者价值体系图)
  16. ABB KUC321AE HIEE300698R0001、KUC755AE106 3BHB005243R0106、KUC711AE 3BHB004661R0001、KUC720AE01
  17. 电脑越用越卡想清又不敢删?搞懂这些文件夹,一键删除省出几个G
  18. [DAY003]考研数学极限的计算知识点与题目总结(三)
  19. RVIZ 的菜单背景变成黑色
  20. 谷歌大牛Jeff Dean是如何成为互联网战神的

热门文章

  1. 身份证前6位匹配户籍地址对应的数据地区sql脚本(里面包含json版本的)
  2. 换行、回车、空格等常用的ASCII码值
  3. 下载webex client的remover
  4. android 各国语言对应的缩写
  5. 时间序列 ARMA 模型实战!
  6. 1万条数据大概占多大空间_国漫丨2019年上半年漫画数据报告
  7. TCL语言中的执行顺序
  8. 基于遗传算法(deap)的配词问题与deap框架
  9. Mirth Connect的简单使用
  10. html5手机静态页面,html手机端WEB纯静态页面