Используйте Python для создания стены аватара друга WeChat одним щелчком мыши

WeChat

предисловие

Использование кода Python для написания программы для создания синтетических аватаров друзей WeChat одним щелчком мыши дает следующий эффект:

Не умеете писать код? Неважно! Пока вы можете пользоваться компьютером, все в порядке! Потому что в дополнение к генерации кода также создается программа .exe, и это делается путем нажатия на компьютер. Ниже приводится подробное объяснение того, как достичь

Учебник по использованию программы

1. Ответить "wx" в фоновом режиме официального аккаунта, чтобы получить программу .exe

20190421163538.png

2. Нажмите «Выполнить в Windows», появится QR-код для входа в WeChat, отсканируйте его с помощью мобильного телефона WeChat, чтобы подтвердить вход.

3. После успешного входа в систему будет отображаться сохраненный аватар, и, наконец, изображение all.png будет сгенерировано в каталоге, где запущена программа.

когда видишь"Все аватары WeChat были синтезированы, пожалуйста, проверьте все.png!", стена аватара, которую вы хотите, прямо здесьwxImagesвнутри папки

20190421164723.png

  1. Вы можете отправить эту картинку в круг друзей, добавить копию, а затем ждать большой волны лайков.

Учебник по коду

Код на самом деле очень простой, в основном потому, что его имеет смысл.Если вы знаете основы Python, а также следующее объяснение, вы тоже можете это сделать!

  1. Сначала создайте новую виртуальную среду. Почему виртуальные среды? Как построить виртуальную среду, я писал в своей предыдущей статье, вы можете найти, полистав исторические новости

虚拟环境

Имя виртуальной среды произвольное, я взял "wx"

  1. Импортируйте только что созданную виртуальную среду в pycharm

3. В основном используются следующие три библиотеки: wxpy Для работы в WeChat, помимо получения аватаров, вы также можете отправлять сообщения друзьям, подробности в официальных документах. подушка

Часть кода для входа в WeChat

@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 для синтеза аватаров друзей WeChat. Если вы считаете, что это полезно для вас, пожалуйста, дайте мне палец вверх...