在朋友圈中你肯定会见到过下面这样的照片,由数张照片拼接成一张具有规则图案形状的照片墙。

其实这样的一张照片也可以用 python 实现,主要用到的是 python 中的 Image 库;制作之前需要一些准备:

作为照片背景墙的矢量图(矢量图是图案的轮廓填充是透明的,其他部分是非透明的白色的;利用PS就可以简单制作,制作方法在下面);

填充照片墙的图片集;

python3.6+ 版本的安装及 Image 包;

原本这篇文章打算想结合python的另一个包 itchat 获取微信好友头像作为图片集,来进行实战。

但不幸的是,微信官方在6月份的时候只限制新注册用户,老注册用户在 itchat 上能够正常登陆使用,但在今年9月份新老用户都进行了限制,关闭了所有微信用户在 itchat 平台上的登陆接口,好友信息我们也就没办法快速获取.........

在找图片集的时候,建议大家可以把自己手机里的相册打包成一个文件夹,也可以利用爬虫技术在网上爬取一些自己喜欢的图片打包成一个集合,作为一个图片集;毕竟,图片不重要,重要的是方法。

作为背景墙的矢量图制作方法如下:

选取一张里面有自己中意的轮廓的图(图片背景墙的好坏取决于它的轮廓)

利用ps打开图片,利用 快速选择工具 选取自己中意的轮廓,把透明度降为0;

再次利用快速选择工具 选取把透明度降为0外的部分,用纯白颜色填冲充;

导出图片(PS:因为图片后面要用到,所以路径中尽可能不要出现中文)

所有工作准备完毕之后,接下来就是要用python进行处理,定制照片墙的制作原理就是:

读取图片背景墙,用Image绘制一个相应大小的模板片;

遍历图片集获取图片数量,根据背景墙图片大小以及图片集数量,找到一个图片合适的尺寸;

按照尺寸把图片集的图片依次拼接到绘制的新的模板片上;

最后根据背景墙轮廓的透明度进行二次拼接,以达到能够形成目标轮廓的目标。

制作好的图片效果如下:

以上,就是照片墙的基本绘制过程,部分代码如下:

fromPILimportImage

importos

id ='zuguo'

img_path ='C:/Users/FREEDOM/Desktop/timg.png'

#自己找的的模板图片存储地址,需要是矢量图

#这个是我获取图片存放的文件夹,根据自己情况进行设置;

folder ='C:/Users/FREEDOM/Desktop/{}'.format(id)

#拼接后图片的存放位置

save_pic_path ='C:/Users/FREEDOM/Desktop/{}.jpg'.format(id)

img =Image.open(img_path)

w,h =img.size#获取图片大小

new_img =Image.new('RGB',(w,h),'#FFFFFF')#创建新的图片,大小与原图片一样

unit_size =60

y_index = h//unit_size

x_index = w//unit_size#双斜杠表示:先做除法,再向下取整;

pic_list = []#存放图片位置

foriinos.listdir(folder):

print(i)

ifi.endswith('.jpg'):

pic_list.append(i)

total =len(pic_list)

x =0

y =0

foriinrange(x_index*y_index):

'''

把folder中存放的图片集贴入到你想要贴的图片上,

'''

print(f'目前进度为{i}\{x_index*y_index}')

try:

#利用 Image.resize()来规定图片大小,其中Image.ANATILAS表示的是高质量图片;

test =Image.open('{}/{}'.format(folder,pic_list[i%total])).resize((unit_size,unit_size),Image.ANTIALIAS)

new_img.paste(test, (x * unit_size, y * unit_size))

x +=1

exceptIOError:

print('读取一张图片失败')

#一排已经扫描完毕

ifx==x_index:

x =0

y +=1

print('素材扫描完毕')

下面这几张图片就是我已将做好的照片墙,是为了多国庆档电影做简单分析用的,感觉不错的话,自己也可以尝试一下,有什么疑问也可以在下面留言给我

完整源码我已经上传到 Github 上了,获取方式:后台回复关键词 照片墙 即可获取

推荐阅读

python制作个人相册_这样精美的照片墙,其实python也能做相关推荐

  1. Python灰帽子_黑客与逆向工程师的Python编程之道

    收藏自用 链接:Python灰帽子_黑客与逆向工程师的Python编程之道

  2. 利用python制作拼图_利用python制作拼图小游戏的全过程

    开发工具 Python版本:3.6.4 相关模块: pygame模块: 以及一些Python自带的模块 关注公众号:Python学习指南,回复"拼图"即可获取源码 环境搭建 安装P ...

  3. python制作标书_爬取比比网中标标书,并保存为PDF格式文件

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. 以下文章来源于CSDN,作者嗨学编程 python开发环境 python 3.6 pycha ...

  4. 如何用python制作樱花_用python绘制樱花树

    黑夜可能漫长,但总会迎来温暖的阳光,三月如期而至,武大的樱花又一次盛开.那么今天就一起来看看怎样在python中画一棵美丽的樱花树- 说到用python画画,那当然就是小乌龟Turtle库了,为啥是t ...

  5. python制作恶搞_搞几款由“Python”语言编写的“有趣、恶搞、好玩”的程序代码!...

    为提高大家对"Python"编程语言的学习兴趣,今天给大家分享几款有趣的Python程序代码,感兴趣的小伙伴可以跟着学习借鉴哦!进群:839383 765可以获取Python学习资 ...

  6. python 面试问题_值得阅读的30个Python面试问题

    python 面试问题 Interview questions are quite tricky to predict. In most cases, even peoples with great ...

  7. python图像计数_计算机视觉:利用OpenCV和Python进行车辆计数详细步骤

    本教程我将分享几个简单步骤解释如何使用OpenCV进行Python对象计数. 需要安装一些软件: Python 3 OpennCV 1.了解Opencv从摄像头获得视频的Python脚本import ...

  8. 关于python的漫画_以漫画的形式写写Python之禅

    #漫画# 题记:我们经常在网络或本地的软件说明文档中,看到一些图形化的字符,看上去很抽象,很简洁,造型也相对明确,是一种计算机图形艺术(美化后的线条表现),因此,小编以为,这些图形化的字符,可以理解为 ...

  9. python老师武_跟着廖雪峰老师学python (5)

    若想技术精进,当然得把基础知识打得牢牢的. 廖雪峰的官方网站  python3教程,该网站提供的教程浅显易懂,还附带了讲学视频,非常适合初学者正规入门. 以下是通过廖雪峰python官方网站学习的个人 ...

  10. 怎么学python知乎_你们都是怎么学 Python 的?

    自学确实是比较难得,没有一个好的规划,好的学习路线图,你不会知道自己下一步该怎么办. 今天我就帮你来解决,分享2020年黑马程序员Python学习路线图,包含学习路线图,学习视频,学习工具,你都可以找 ...

最新文章

  1. Simple Dynamic Strings(SDS)源码解析和使用说明二
  2. linux网卡开启GRO导致lvs 部分节点响应慢
  3. python时间序列分析航空旅人_python时间序列分析
  4. 计算机和外部通信方式,计算机和外部的通信方式
  5. 贪心法——区间覆盖问题
  6. 重读经典:完全解析特征学习大杀器 ResNet
  7. 网关冗余工作原理(总结)
  8. Spark2.2(三十九):如何根据appName监控spark任务,当任务不存在则启动(任务存在当超过多久没有活动状态则kill,等待下次启动)...
  9. u9系统的使用方法仓库_【用友u9使用教程】
  10. Xshell7安装教程
  11. python 中的拷贝、浅拷贝与深拷贝
  12. 台式计算机主板接口识别,硬件丨当前台式机主板接口知识普及与主板结构全讲解...
  13. 在线音乐播放地址//歌曲URL地址提取
  14. Dennis Gabor与全息摄影
  15. 银行mysql面试题_mysql的常见面试题
  16. 一个宽带猫能不能连接两个路由器?
  17. sd卡格式化怎么恢复?
  18. MySQL#在指定的列中添加数据
  19. 详解设计模式之策略模式
  20. office2007安装找不到文件问题

热门文章

  1. WampServer 给电脑搭建apache服务器和php环境
  2. 转 Still,yet和already的用法
  3. 性能优化-简谈JVM
  4. linux 6.8安装 mysql_linux centos6.8 安装 mysql5.7.zip(完整版)
  5. Java Web架构实战篇:聊一聊前后端分离架构
  6. 非平衡电桥电阻计算_微安表内阻值对热敏电阻温度计设计的影响
  7. flex 平铺布局_Flex布局的个人见解~阮一峰的网络日志
  8. 判断是否是完全二叉树_二叉树:我对称么?
  9. java几次,java兑现限制用户几次登录
  10. Thinkphp5 接口中直接返回数组提示variable type error: array