目录: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位好友。

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

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


-END-

推荐阅读:(点击下方标题即可跳转)

没看完这11 条,别说你精通 Python 装饰器

⬆️长按 2 秒关注「 小詹学Python 」

Python 制作微信全家福,你就是朋友圈最亮的仔!相关推荐

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

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

  2. Python 制作微信全家福

    https://mp.weixin.qq.com/s?__biz=MzU0OTU5OTI4MA==&mid=2247487008&idx=2&sn=8621ad10badb90 ...

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

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

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

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

  5. angularjs input标签用一个日期插件后数据不能双向绑定了_微信如何定时发朋友圈?(最方便最好用的办法!)...

    微信怎么发朋友圈(微信如何定时发朋友圈)作为一个运营新媒体的小编,很多情况下,我都会遇到定时发文的情况,对于我来说,定时发文很简单. 只要将文案编辑好,使用平台的定时发文功能就可以,所以,我就想,微信 ...

  6. python发朋友圈_用 Python 发一个高逼格的朋友圈

    原标题:用 Python 发一个高逼格的朋友圈 源 /痴海文 /痴海 分享一个非常骚气的发朋友圈姿势.效果如下. 利用今天教给大家的 python 脚本,把一张图重新分隔成 9 张.上传到朋友圈,最后 ...

  7. python发朋友圈_10分钟教你用Python发一个高逼格的朋友圈

    程序猿声 你与千万程序猿在一起 01 前言 Hello~各位小伙伴们大家好.现在大家是越来越离不开手机,离不开微信了.每天打开手机的第一或者第二件事就是赶紧打开朋友圈看看有什么好玩的东西.偶尔忍不住了 ...

  8. 用 Python 发一个高逼格的朋友圈

    源 / 痴海  文 / 痴海 分享一个非常骚气的发朋友圈姿势.效果如下. 利用今天教给大家的 python 脚本,把一张图重新分隔成 9 张.上传到朋友圈,最后就会形成上面的效果.可能有些人在朋友圈有 ...

  9. 【s操作】轻松优雅的保存微信群图片和朋友圈图片

    上次聊了一下锤子手机的使用体验:锤子手机使用2年,聊聊锤子手机,坚果手机功能使用体验,主要介绍了几个软件上的使用技巧.最近几年越来越重视软件的使用体验,主要因为软件更亲民,硬件上从835又到845又到 ...

最新文章

  1. 关于学习Python的一点学习总结(34->构造函数->重写方法和特殊构造)
  2. 深度学习与芯片之间的羁绊往事
  3. 链式链表的C风格实现
  4. server2016做文件服务器,『配置』服务器搭建 Office Online Server2016 实现文档预览 番外 错误篇...
  5. Bash字符串处理(与Java对照) - 17.判断是否以另外的字符串结尾
  6. android 复制字符串,Cocos2dx 复制文本到剪切板(Android 和 ios)
  7. 事理图谱:一种纯学术需求、无法落地、漏洞百出的新技术或新概念?
  8. 四个人过桥的题目_云南的几种“勾魂”特产,舌尖上的美味,让人回味无穷,你吃过吗...
  9. 【面向对象】实现继承的正确实践和不当实践
  10. HTML系列(四):编辑图像
  11. 感恩节(美食火鸡大餐)PNG免扣素材 总有一款你用得上
  12. 网络管理与维护作业4
  13. 跨境移动互联网的魅力演绎,hao123无论成就下一个条目?
  14. Vue中解决移动端点击300毫秒延迟的问题
  15. 林祖宁《ISO20000-12011 认证合格判定基础》
  16. tumblr_如何在WordPress中添加Tumblr共享按钮
  17. 基于机器学习的敏感信息泄露治理探索
  18. python外文文献翻译_英文学术文献翻译软件有哪些推荐?
  19. AutoGPT保姆级使用教程
  20. Python实现自定义竖线的线型

热门文章

  1. java如何把string转化E_java将string转为代码执行
  2. x86架构和arm架构_RISC-V架构1000核CPU登场 x86架构腹背受敌
  3. 操作系统角度谈测试管理和自动化测试
  4. mysql guid_MySQL – 自动增加到guid
  5. mysql查询两个日期之间的数据
  6. c++ list box 字体设置_上海印刷字体展示馆 迎来第一批团队参观
  7. c 获得java数据_JNI:如何将一组数据从c转换为Java
  8. 计算机网络的体系结构与协议基本概念,计算机网络技术基础-第3章网络体系结构与协议.ppt...
  9. 威学一百_精彩回顾深圳威学一百低龄校区圣诞活动精彩回顾!
  10. Eclipse中svn插件:Subclipse插件安装