一键生成合成微信好友墙

前言

用 python 代码写了一个一键生成合成微信好友头像的程序,效果如下:

不会写代码?没关系!只要你会使用电脑就 ok!
因为除了用代码方式生成外,还建了一个 .exe 的程序,在电脑点击运行就完事了
下面分别详细的给大家讲解是如何实现的

程序使用教程

1.公众号后台回复 “wx”即可获取 .exe 程序

20190421163538.png

2.在windows上点击运行,会弹出一个微信登陆的二维码,用手机微信扫描,确认登录。
3.登陆成功后,会显示保存的头像,最后会在程序运行的目录生成一张 all.png 的图片

当看到 “所有的微信头像已合成,请查阅all.png!” 的时候,你要的头像墙就在 [wxImages] 文件夹里面

20190421164723.png

4. 你可以把这张图发到朋友圈,随便配个文案,随后就等着大波点赞吧。

代码教程

代码其实很简单,主要是做起来觉得很有意义,如果你会python基础,再加上下面的讲解,你也可以的!
####1. 首先新建一个虚拟环境。为什么要虚拟环境?怎么建虚拟环境? 我之前的文章有写,去历史消息翻翻就能找到

虚拟环境

虚拟环境的名字随意取,我取的是 [“wx”]

2. 在pycharm 中导入刚才建好的虚拟环境
3.需要安装的库:

wxpy
用来操作微信的,除了获取头像,还能给好友发消息,具体可查看官方文档

pillow <=4.2.1
处理头像

pyinstaller
将代码打包成 .exe 程序的

4. 接下来就是写代码了

微信登陆部分代码

@staticmethod
    def get_image():
        path = os.path.abspath(".")  #当前目录
        bot = Bot()  # 机器人对象
        friends = bot.friends(update=True)
        dirs = path + "\\wxImages"  #  微信头像保存的路径
        if not os.path.exists(dirs):
            os.mkdir("wxImages")

        index = 0
        for friend in friends:
            print(f"正在保存{friend.nick_name}的微信头像")
            friend.get_avatar(dirs + "\\" + f"{str(index)}.jpg")
            index += 1

        return dirs  # 合成头像的时候需要用到

合成图像代码

 @staticmethod
    def composite_image(dirs):
        images_list = os.listdir(dirs)
        images_list.sort(key=lambda x: int(x[:-4]))  # 根据头像名称排序
        length = len(images_list)  # 头像总数
        image_size = 2560  # 
        # 每个头像大小
        each_size = math.ceil(image_size / math.floor(math.sqrt(length)))
        lines = math.ceil(math.sqrt(length))  # 列数
        rows = math.ceil(math.sqrt(length))  # 行数
        image = Image.new('RGB', (each_size * lines, each_size * rows))
        row = 0
        line = 0
        os.chdir(dirs)  # 切换工作目录
        for file in images_list:  # 遍历每个头像
            try:
                with Image.open(file) as img:
                    img = img.resize((each_size, each_size))
                    image.paste(img, (line * each_size, row * each_size))
                    line += 1
                    if line == lines: # 一行填满后开始填下一行
                        line = 0
                        row += 1
            except IOError:
                print(f"头像{file}异常,请查看")
                continue

        img = image.save(os.getcwd() + "/all.png")  # 将合成的头像保存
        if not img:
            print('所有的微信头像已合成,请查阅all.png!')

核心代码完成后,将两部分合一起再导入需要的包,就完事了

源码在此

# coding: utf-8
from wxpy import Bot, Chat
import math
import os
from PIL import Image

class WxFriendImage(Chat):
    @staticmethod
    def get_image():
        path = os.path.abspath(".")
        bot = Bot()  # 机器人对象
        friends = bot.friends(update=True)

        dirs = path + "\\wxImages"
        if not os.path.exists(dirs):
            os.mkdir("wxImages")

        index = 0
        for friend in friends:
            print(f"正在保存{friend.nick_name}的微信头像")
            friend.get_avatar(dirs + "\\" + f"{str(index)}.jpg")
            index += 1

        return dirs

    @staticmethod
    def composite_image(dirs):
        images_list = os.listdir(dirs)
        images_list.sort(key=lambda x: int(x[:-4]))  # 根据头像名称排序
        length = len(images_list)  # 头像总数
        image_size = 2560
        # 每个头像大小
        each_size = math.ceil(image_size / math.floor(math.sqrt(length)))
        lines = math.ceil(math.sqrt(length))  # 列数
        rows = math.ceil(math.sqrt(length))  # 行数
        image = Image.new('RGB', (each_size * lines, each_size * rows))
        row = 0
        line = 0
        os.chdir(dirs)
        for file in images_list:
            try:
                with Image.open(file) as img:
                    img = img.resize((each_size, each_size))
                    image.paste(img, (line * each_size, row * each_size))
                    line += 1
                    if line == lines:
                        line = 0
                        row += 1
            except IOError:
                print(f"头像{file}异常,请查看")
                continue
        img = image.save(os.getcwd() + "/all.png")
        if not img:
            print('所有的微信头像已合成,请查阅all.png!')
def main():
    dirs = WxFriendImage.get_image()
    WxFriendImage.composite_image(dirs)
if __name__ == '__main__':
    main()

可以将代码复制到自己的编译器里面运行,效果是一样的。

至于打包成 .exe的程序就更简单了
在命令行中运行下面的命令即可

pyinstaller -F F:\wx\wx.py

运行成功后,会在倒数第二行显示生成程序的路径

好了,以上就是用python合成微信好友头像的全部指南了
觉得对你有用,就帮忙点个赞呗…


下面是本人的公众号,里面有很多志同道合的朋友,欢迎关注学习加群
欢迎关注

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
一键生成个人微信朋友圈数据电子书-爬虫Python代码.zip是一个用Python编写的爬虫程序,用于自动获取个人微信朋友圈数据并生成电子书。它可以让用户省去手动复制粘贴的麻烦,只需一键运行程序,就能够自动获取到朋友圈的文字、图片和视频等信息,并将其以电子书的形式保存起来。 这个爬虫程序基于Python编程语言,使用了一些常用的爬虫库,如Requests和BeautifulSoup,以及一些其他辅助库,如Pillow和Pandoc。 具体的使用步骤如下: 1. 下载并解压缩一键生成个人微信朋友圈数据电子书-爬虫Python代码.zip文件。 2. 安装Python编程环境,并确保已经安装了相关的第三方库。 3. 打开命令行窗口,进入到程序所在的目录。 4. 运行命令python main.py。 5. 程序会自动弹出一个浏览器窗口,请输入你的微信账号和密码登录微信。 6. 登录成功后,程序会自动开始抓取你的朋友圈数据。 7. 抓取完成后,程序会自动将数据保存为HTML格式,并自动转换为电子书(如PDF或EPUB格式)。 8. 最终生成的电子书会保存在程序所在的目录下,并以"朋友圈数据电子书"为文件名。 总之,一键生成个人微信朋友圈数据电子书-爬虫Python代码.zip为用户提供了一个简便、自动化的方法来获取和保存个人微信朋友圈的数据。只需要简单地跟随上述步骤,用户就可以轻松地生成自己的朋友圈数据电子书。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

全村之希望

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值