目录:
0 引言
1 环境
2 代码实现
3 后记

0 引言

前段时间,微信朋友圈开始出现了一种晒照片新形式,微信好友墙,即在一张大图片中展示出自己的所有微信好友的头像。

效果如下图,出于隐私考虑,这里作了模糊处理。

是不是很炫,而且这还是独一无二的,毕竟每个人的微信好友是不一样的。本文就教大家用Python来实现这种效果。

1 环境

操作系统:Windows

Python版本:3.7.3

2 代码实现

我们需要首先需要获取好友的头像信息,接下来处理图像并完成图像的拼接。

2.0 准备工作

在这里,我们登录微信获取好友信息,使用的是 wxpy 模块;处理并生成最终的图像借助 PIL 模块。因为都是第三方模块,如环境中没有可以使用 pip 进行安装。另外涉及路径的处理等,我们需要导入 os 模块和 sys 模块。

from wxpy import *
import PIL.Image as Image
import os
import sys

2.1 获取并存储好友头像信息

我们要获取微信好友的头像,首先需要登录微信

# 初始化机器人,扫码登陆微信,适用于Windows系统
bot = Bot()# # Linux系统,执行登陆请调用下面的这句
# bot = Bot(console_qr=2, cache_path="botoo.pkl"

在获取好友头像信息之前,我们得先在本地创建一个目录,用于后续存储好友头像的文件。

# 获取当前路径信息
curr_dir = get_dir(sys.argv[0])
# 如果FriendImgs目录不存在就创建一个
if not os.path.exists(curr_dir + "FriendImgs/"):os.mkdir(curr_dir + "FriendImgs/")

接下来就是获取友头像信息,并将其存储在本地创建的目录中。

my_friends = bot.friends(update=True)
# 获取好友头像信息并存储在FriendImgs目录中
n = 0
for friend in my_friends:friend.get_avatar(curr_dir + "FriendImgs/" + str(n) + ".jpg")n = n + 1

这时你就可以在本地FriendImgs文件夹中,看到保存下来的微信好友头像的图片。

2.2 生成微信好友墙

制作微信好友墙,就像以前的大字报,把我们下载的好友头像逐一贴上去即可。

首先设定好微信好友墙的尺寸,使用 Image.new() 方法。

image = Image.new("RGB", (650, 650))

接下来,我们需要逐个打开微信好友的图片,使用 Image.open() 方法。

img = Image.open(curr_dir + "FriendImgs/" + file_names)

将微信头像图片,重置为50*50像素尺寸的小图,使用 img.resize() 方法。

img = img.resize((50, 50), Image.ANTIALIAS)

然后将图片黏贴到我们的照片墙中,使用 image.paste() 方法。

image.paste(img, (x * 50, y * 50))

最后将制作完成的照片墙保存下来,使用 image.save() 方法。

img = image.save(curr_dir + "WeChat_Friends.jpg")

现在我们将本小节中代码整合到一起,如下所示:

# 准备生成微信好友头像墙的尺寸
image = Image.new("RGB", (650, 650))# 定义初始图片的位置
x = 0
y = 0# 获取下载的头像文件
curr_dir = get_dir(sys.argv[0])
ls = os.listdir(curr_dir + 'FriendImgs')# 遍历文件夹的图片
for file_names in ls:try:# 依次打开图片img = Image.open(curr_dir + "FriendImgs/" + file_names)except IOError:continueelse:# 重新设置图片的大小img = img.resize((50, 50), Image.ANTIALIAS)# 将图片粘贴到最终的照片墙上image.paste(img, (x * 50, y * 50))# 设置每一行排13个图像x += 1if x == 13:x = 0y += 1
# 保存图片为WeChat_Friends.jpg
img = image.save(curr_dir + "WeChat_Friends.jpg

代码执行后,最终生成的效果图如下:

(这里展示的图片做了模糊处理)

3 后记

本文中设定照片墙尺寸为650650,而好友头像尺寸为5050,这样最终制作成的照片墙每行有13位好友,共计容纳13*13位好友。

大家可根据自己实际情况,自行调整尺寸参数,以达到最佳效果。大家赶快去生成自己独一无二的照片墙吧~!

好啦,本文所有内容就到这里结束啦。其实后面还可以衍生很多玩法,比如:心行墙、圆墙等。不过逻辑一样,就是代码处理起来会比较麻烦。有兴趣的可以先自己试试,或者等我……

代码已上传至Github:https://github.com/MiracleYoung/You-are-Pythonista/tree/master/PythonExercise/Tool/Wechat_Photo_Wall

关注公众号「Python专栏」了解更多有趣的Python~

教你用Python制作微信好友背景墙相关推荐

  1. python软件设计背景_教你用Python制作微信好友背景墙

    目录: 0 引言 1 环境 2 代码实现 3 后记 0 引言 前段时间,微信朋友圈开始出现了一种晒照片新形式,微信好友墙,即在一张大图片中展示出自己的所有微信好友的头像. 效果如下图,出于隐私考虑,这 ...

  2. python代码手机壁纸_Python制作微信好友背景墙教程(附完整代码)

    引言 前段时间,微信朋友圈开始出现了一种晒照片新形式,微信好友墙,即在一张大图片中展示出自己的所有微信好友的头像. 效果如下图,出于隐私考虑,这里作了模糊处理. 是不是很炫,而且这还是独一无二的,毕竟 ...

  3. 最炫python表白代码_Python制作微信好友背景墙教程(附完整代码)

    引言 前段时间,微信朋友圈开始出现了一种晒照片新形式,微信好友墙,即在一张大图片中展示出自己的所有微信好友的头像. 效果如下图,出于隐私考虑,这里作了模糊处理. 是不是很炫,而且这还是独一无二的,毕竟 ...

  4. 只需四步,让你成为朋友圈的焦点----Python制作微信好友头像墙

    今天带给大家一波实力干货,让你分分钟成为朋友圈的红人.焦点! 先来张效果图感受一下! 怎么样,是不是很爽! 链接在这↓ 链接:https://pan.baidu.com/s/1qhRkkLPLdZqE ...

  5. Python 一键制作微信好友图片墙

    上午发了张我微信近 2000 位好友的头像拼图,让大伙儿看能不能快速找到自己的头像,没想到反响很强烈,引得阵阵惊呼与膜拜,没有料到. 有没有犯密集恐惧症?这并不震撼,如果你有 5000 位好友的话,做 ...

  6. python制作微信个人二维码_如何用Python制作微信好友个性签名词云图

    前言 上次查看了微信好友的位置信息,想了想,还是不过瘾,于是就琢磨起了把微信好友的个性签名拿到,然后分词,接着分析词频,最后弄出词云图来. 1.环境说明 Win10 系统下 Python3,编译器是 ...

  7. 用python做头像_如何利用python制作微信好友头像照片墙?

    这个不难,主要用到itchat和pillow这2个库,其中itchat用于获取微信好友头像照片,pillow用于拼接头像生成一个照片墙,下面我简单介绍一下实现过程,代码量不多,也很好理解,实验环境wi ...

  8. python微信图标制作_Python 一键制作微信好友图片墙的方法

    wxpy.pyinstalller 库的使用. 上午发了张我微信近 2000 位好友的头像拼图,让大伙儿看能不能快速找到自己的头像,没想到反响很强烈,引得阵阵惊呼与膜拜,没有料到. 有没有犯密集恐惧症 ...

  9. python表白代码照片墙-如何利用python制作微信好友头像照片墙?

    这个不难,主要用到itchat和pillow这2个库,其中itchat用于获取微信好友头像照片,pillow用于拼接头像生成一个照片墙,下面我简单介绍一下实现过程,代码量不多,也很好理解,实验环境wi ...

  10. python微信好友分析源代码_搞事情了 | 教你用Python分析微信好友信息(内附完整代码)...

    本文经授权转载至公众号 Python 知识圈 未经授权 严禁二次转载 阅读文本大概需要 5 分钟 技术群里一位读者微信私聊我,问我能不能统计下微信好友信息并以文件形式保存.其实,以前也写过类似的文章, ...

最新文章

  1. 如何制作EDM邮件的内容
  2. 【JavaEE】WebService到底是什么?
  3. #中regex的命名空间_Python命名空间实例解析
  4. 计算机程序输入x是3求输出七年级的题,如图所示是计算机程序计算,若开始输入,则最后输出的结果是  ▲  .  ——青夏教育精英家教网——...
  5. JAVA之获取JavaSwing复选框JCheckBox选中的值(内容)
  6. [转]测试淘宝站内的搜索系统
  7. Kafka负载均衡策略
  8. sql server系统数据库,temp库的用途
  9. mysql修改唯一索引
  10. 邮件在线编辑器-零基础制作精美图文并茂的HTML邮件不费力
  11. hadoop生态系统的详细介绍-详细一点
  12. 写给程序员看的项目管理入门
  13. chatGPT 与文言一心的对比
  14. LINEST函数根据上半年产品销售量预算指定月份的销售量
  15. Google谷歌未来如何占领“Web3高地”?
  16. win10多显示器设置只有主显示屏显示任务栏
  17. 哈夫曼编码树的经典题目
  18. 迈拓恢复出厂设置图解_迈拓维矩电脑切换器使用方法?
  19. Bluetooth Baseband介绍
  20. 如何有效防止系统邮件被视为垃圾邮件

热门文章

  1. Oliver的救援(广搜练习题)
  2. 聪明的猴子(BZOJ 2429)
  3. Bloodsucker ZOJ-3551 期望DP
  4. cisco ASA 防火墙安全算法原理和基本配置(转自http://xiaoxiao1001.blog.51cto.com/7640562/1300161)
  5. UCenter的百科
  6. 《OpenCv视觉之眼》Python图像处理三 :Opencv图像属性、ROI区域获取及通道处理
  7. springBoot学习笔记(6)——@Valid和@Validated的使用
  8. Unity3D和UE4的保护方式与.net的区别
  9. Cobalt Strike 的 Beacon 使用介绍以及 Profile 文件修改Beacon内存教程
  10. centos安装git时出错提示make[1]: *** [perl.mak] Error 2 make: *** [perl/perl.mak] Error 2