网络编程
位置:首页>> 网络编程>> Python编程>> Python制作微信好友背景墙教程(附完整代码)

Python制作微信好友背景墙教程(附完整代码)

作者:上海小胖  发布时间:2022-11-13 08:31:08 

标签:python,微信,好友,背景墙
目录
  • 引言

  • 环境

  • 代码实现

    • 准备工作

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

    • 生成微信好友墙

  • 后记

    引言

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

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

    Python制作微信好友背景墙教程(附完整代码)

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

    环境

    操作系统:Windows

    Python版本:3.7.3

    代码实现

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

    准备工作

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


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

    获取并存储好友头像信息

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


    # 初始化机器人,扫码登陆微信,适用于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文件夹中,看到保存下来的微信好友头像的图片。

    Python制作微信好友背景墙教程(附完整代码)

    生成微信好友墙

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

    首先设定好微信好友墙的尺寸,使用 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

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

    Python制作微信好友背景墙教程(附完整代码)

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

    后记

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

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

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

    代码已上传至Github

    来源:https://www.cnblogs.com/moonhmily/p/11200162.html

    0
    投稿

    猜你喜欢

    • 大家都遇到过验证码,随着灌水机的发展,验证码也是日新月异,验证码开始分了繁体简体,带着字母、符号,甚至开始了中文验证码,看到这样的验证码,估
    • 前言Java 中最通用的日志模块莫过于 Log4j 了,在 python 中,也自带了 logging 模块,该模块的用法其实和 Log4j
    • 当创建一个Models, 在同步到数据库里,django默认设置了三个权限 ,就是 add, change, delete权限。但是往往有时
    • 模板在写动态页面的网站的时候,我们常常将不变的部分提出成为模板,可变部分通过后端程序的渲染来生成 * 页,golang提供了html/tem
    • 下面代码的功能是先训练一个简单的模型,然后保存模型,同时保存到一个pb文件当中,后续可以从pd文件里读取权重值。import tensorf
    • 根据当前时间戳获得整小时时间戳unit = 3600start_time = int(time.time())/3600 * 3600根据当
    • 长期以来我就有对几年来交互设计的心得进行总结整理的想法。回到中国来亲身体会到不少同行,主要是交互设计师和视觉设计师对于交互设计的困惑,以及其
    • 多线程类似于同时执行多个不同程序,多线程运行有如下优点:使用线程可以把占据长时间的程序中的任务放到后台去处理。用户界面可以更加吸引人,比如用
    • 大家经常用的是Adodb.Stream,但这时就有个缺陷,就是不支持断点续传了。经常看到flashget中是红脸(即不支持断点续传)其实支持
    • 默认情况下,写在.vue组件中的样式会全局生效,因此很容易造成多个组件之间的样式冲突问题。导致组件之间样式冲突的根本原因是:单页面应用程序中
    • 今天做一个超简单的无损放大图片的程序,原理很简单JPG原理:读取原图片的像素点的RGB颜色值并保存到文件内,然后将原图进行翻倍放大,在放大的
    • 线程池的概念是什么?在面向对象编程中,创建和销毁对象是很费时间的,因为创建一个对象要获取内存资源或者其它更多资源。在Java中更是 如此,虚
    • 本文实例讲述了Python实现导出数据生成excel报表的方法。分享给大家供大家参考,具体如下:#_*_coding:utf-8_*_imp
    • 1、目的:在Python中实现只读取扩展名为xlsx的文件解决方法:使用os模块。解决思路:1、确定目录2、循环遍历每一个文件3、筛选符合条
    • 应用 Scrapy框架 ,配置动态IP处理反爬。# settings 配置中间件DOWNLOADER_MIDDLEWARES = { &nb
    • 前言本篇文章介绍如何查询 Binlog 的生成时间。云上 RDS 有日志管理,但是自建实例没有,该脚本可用于自建实例闪回定位 Binlog
    • 安装request库以火车的站站查询为例的post和get方法的接口测试使用pytest测试接口1、requests的请求机制1、安装req
    • 这篇文章主要介绍了微信小程序顶部导航栏可滑动并选中放大,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋
    • 本文实例讲述了python实现ip代理池功能。分享给大家供大家参考,具体如下:爬取的代理源为西刺代理。用xpath解析页面用telnet来验
    • 在os模块中提供了两种调用 cmd 的方法,os.popen() 和 os.system()os.system(cmd) 是在执行comma
    手机版 网络编程 asp之家 www.aspxhome.com