https://mp.weixin.qq.com/s?__biz=MzU0OTU5OTI4MA==&mid=2247487008&idx=2&sn=8621ad10badb900ad2e700927e947c4c&chksm=fbac2f7fccdba6691cc5d12353e955cf8486c5ab88d2f94bed7dc04e2aba307a6c551bb235e2&scene=21#wechat_redirect

目录: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:
        continue
    else:
        # 重新设置图片的大小
        img = img.resize((50, 50), Image.ANTIALIAS)
        # 将图片粘贴到最终的照片墙上
        image.paste(img, (x * 50, y * 50))
        # 设置每一行排13个图像
        x += 1
        if x == 13:
            x = 0
            y += 1
# 保存图片为WeChat_Friends.jpg
img = image.save(curr_dir + "WeChat_Friends.jpg

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

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

3 后记

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

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

公众号后台回复「照片墙」即可获取本文全部代码。

Python 制作微信全家福相关推荐

  1. Python 制作微信全家福,你就是朋友圈最亮的仔!

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

  2. 用Python 制作微信全家福,这么神奇的吗?

    前聊天刷朋友圈,晒了一张下面的照片,微信好友墙,一张大图片,展示了自己所有好友的照片! 效果图如下,出于隐私,这里作了模糊处理. 是不是很炫,而且这还是独一无二的,毕竟每个人的微信好友是不一样的.本文 ...

  3. 用python制作生日蛋糕图片大全_Python 制作微信全家福,你就是朋友圈最亮的仔!...

    原标题:Python 制作微信全家福,你就是朋友圈最亮的仔! 目录:0 引言 1 环境2 代码实现3 后记 0 引言 前段时间,微信朋友圈开始出现了一种晒照片新形式,微信好友墙,即在一张大图片中展示出 ...

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

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

  5. 利用Python制作微信机器人(三)实现爬取JD商品价格

    从前两篇的博客来看,目前已经实现了机器人单向给微信发消息,和与机器人进行交互式发消息,详情如下: 利用Python制作微信机器人(一)机器人单向发消息 利用Python制作微信机器人(二)与机器人进行 ...

  6. 利用Python制作微信跳一跳外挂,微信好友装逼神器!

    导语 前几天在GitHub上看到有人利用Python玩一款名为"跳一跳"的微信小程序,于是打算自己也来试一试,进群:711944363 获取微信跳一跳源码! 演示工具 电脑系统:W ...

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

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

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

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

  9. 利用Python制作微信机器人(二)

    上次写了利用Python制作微信机器人,其中只实现了通过api来控制微信机器人来给自己发送消息,具体详情可查看: 利用Python制作微信机器人(一) 本篇博客主要编写如何是实现给微信机器人发送消息, ...

最新文章

  1. WebService注解
  2. 程序员面试系列——单链表的反转
  3. PHP学习总结(会话控制)
  4. mysql5.7.24怎么打开_mysql-5.7.24-winx64安装教程
  5. 前端学习(41):背景实现视觉差效果
  6. 3个观念 不再瞎学习!
  7. 基于FPGA实现IIC接口(EEPROM)
  8. 使用了css3动画的元素z-index失效解决办法
  9. debian 8 和centos 配置java 环境变量的正确姿态
  10. 拓端tecdat|sas神经网络:构建人工神经网络模型来识别垃圾邮件
  11. IDEA设置好看的字体
  12. uniapp app 腾讯云 IM 通讯 UserSig 加密协议方案
  13. android 5.0 n,EMUI 5.0遭泄漏 基于Android N制作!华为P9用户有福啦
  14. 快门光圈感光度口诀_基础教程之单反设置篇:60秒让你设置好快门光圈以及感光度...
  15. “No Problem”没问题,不客气的其他英语表达方式
  16. CSDN日报190221——被裁的第50天,我终于拿到心仪公司Offer
  17. 全球 Top 1000计算机科学家公布:中国53位学者上榜!
  18. OpenCV4.3 Java 编程入门:离散傅里叶变换
  19. 从GraalVM到Quarkus系列-B002篇-Quarkus中的字节码框架gizmo
  20. GTASA圣安地列斯大量高清贴图包导致游戏崩溃闪退的解决办法

热门文章

  1. mingw+cmake编译Assimp库遇到undefine问题
  2. SSM三大框架+SpringMVC的工作原理及其流程
  3. 1.JVM的初步介绍(宋红康笔记)
  4. PCB设计笔记-AD(四)-AD PCB 根据板外形铺铜 异形板自动铺铜
  5. 注意的种类有?区别是?心理学中的“随意”是什么意思?|小白心理-312/347考研答疑
  6. img大小不一样解决方案
  7. 阿里巴巴字体图标iconfont使用
  8. 《网络是怎么样连接的》- 集线器、路由器和路由器
  9. js全部替换与保留指定字条的正则表达式应用
  10. 网卡混杂模式Promiscuous与linux上混杂模式的设置