欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python 一鍵制作微信好友圖片墻的方法

 更新時間:2019年05月16日 09:11:44   作者:急速奔跑中的蝸牛  
這篇文章主要介紹了Python 一鍵制作微信好友圖片墻的方法,有兩種方法,每種方法給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下

wxpy、pyinstalller 庫的使用。

上午發(fā)了張我微信近 2000 位好友的頭像拼圖,讓大伙兒看能不能快速找到自己的頭像,沒想到反響很強烈,引得陣陣驚呼與膜拜,沒有料到。


有沒有犯密集恐懼癥?這并不震撼,如果你有 5000 位好友的話,做出來的圖看著會更刺激些。

看完了圖,你可能想知道這個圖咋做出來的,不會是我閑著無聊把把好友頭像一個個保存下來再用 PS 拼的吧?

自然不是了,Python 做的,是不是覺得沒有 Python 干不了的事兒。其實,這種圖很早就有人玩過了,不過下面還是來說說怎么做出來,這樣你也可以做一個自己微信好友的圖片墻。

有兩種方法,一種簡單的,不用接觸 Python 代碼,一種稍微復雜點,需要寫代碼。

先說簡單的方法,只需要兩步:運行程序然后掃微信二維碼就行了。剩下的交給程序自己蹦跶,泡杯茶在電腦前等待幾分鐘左右就可以得到圖片,具體的等待時間視微信好友數量而不同,我近 2000 好友,用時 10 分鐘左右。

一個簡單的操作示意圖:


幾分鐘后就可以得到上面的圖片了。

其實到這兒就完了,是不是很簡單。

你要感興趣怎么實現(xiàn)的,可以往下看用 Python 代碼怎么實現(xiàn)的,代碼不長,60 行就可以搞定。

核心是利用三個個庫:

  • wxpy 庫,用于獲取好友頭像然后下載
  • Pillow 庫,用于拼接頭像
  • Pyinstaller 庫,用來打包 Python 程序成 exe 文件

程序通過三個函數實現(xiàn),第一個 creat_filepath 函數生成圖片下載文件路徑,第二個 save_avatar 函數循環(huán)獲取微信好友頭像然后保存到本地,第三個 joint_avatar 函數就是把頭像拼接成一張大圖。

完整代碼如下:

# -*- coding: utf-8 -*-
from wxpy import *
import math
from PIL import Image
import os
# 創(chuàng)建頭像存放文件夾
def creat_filepath():
 avatar_dir = os.getcwd() + "\\wechat\\"
 if not os.path.exists(avatar_dir):
 os.mkdir(avatar_dir)
 return avatar_dir
# 保存好友頭像
def save_avatar(avatar_dir):
 # 初始化機器人,掃碼登陸
 bot = Bot()
 friends = bot.friends(update=True)
 num = 0
 for friend in friends:
 friend.get_avatar(avatar_dir + '\\' + str(num) + ".jpg")
 print('好友昵稱:%s' % friend.nick_name)
 num = num + 1
# 拼接頭像
def joint_avatar(path):
 # 獲取文件夾內頭像個數
 length = len(os.listdir(path))
 # 設置畫布大小
 image_size = 2560
 # 設置每個頭像大小
 each_size = math.ceil(2560 / math.floor(math.sqrt(length)))
 # 計算所需各行列的頭像數量
 x_lines = math.ceil(math.sqrt(length))
 y_lines = math.ceil(math.sqrt(length))
 image = Image.new('RGB', (each_size * x_lines, each_size * y_lines))
 x = 0
 y = 0
 for (root, dirs, files) in os.walk(path):
 for pic_name in files:
 # 增加頭像讀取不出來的異常處理
 try:
 with Image.open(path + pic_name) as img:
 img = img.resize((each_size, each_size))
 image.paste(img, (x * each_size, y * each_size))
 x += 1
 if x == x_lines:
 x = 0
 y += 1
 except IOError:
 print("頭像讀取失敗")
 img = image.save(os.getcwd() + "/wechat.png")
 print('微信好友頭像拼接完成!')
if __name__ == '__main__':
 avatar_dir = creat_filepath()
 save_avatar(avatar_dir)
 joint_avatar(avatar_dir)

可以直接在運行程序文件,也可以用 Pyinstaller 文件打包后運行。這里額外說一下 pyinstaller 打包的方法和閉坑指南。

不要直接在系統(tǒng)中用 pyinstaller 打包,否則打包出來的 exe 文件會很大。建議在虛擬環(huán)境中打包,打包出來的 exe 文件會小很多, 10MB 左右。

虛擬環(huán)境創(chuàng)建很簡單,簡單說一下步驟:

1 安裝 pipenv 和 pyinstaller 包,用于后續(xù)創(chuàng)建虛擬環(huán)境和打包程序:

pip install pipenv
pip install pyinstaller # 已安裝就不用安裝了

2 選擇一個合適的目錄作為 Python 虛擬環(huán)境,運行:

pipenv install # 創(chuàng)建虛擬環(huán)境
pipenv shell # 創(chuàng)建好后,進入虛擬環(huán)境

3 安裝程序引用的庫,上面程序引用了四個庫:wxpy、math、os 和 PIL,一行代碼就可以完成安裝。

pipenv install wxpy math os

4 這里要額外注意 PIL 的安裝,現(xiàn)在不用 PIL 庫,而是用 Pillow 庫取代,所以安裝 Pillow 庫就行。但不要安裝最新的 6.0.0 版本,否則可能會遇到各種錯誤,例如:PIL 無法識別下載的 jpg 頭像文件。

OSError: cannot identify image file <ImageFieldFile: images

正確的安裝方法是安裝低版本,經嘗試安裝 4.2.1 版本沒有問題,安裝命令:

pipenv install Pillow==4.2.1

5 然后打包程序就可以了:

pyinstaller -F C:\Users\sony\Desktop\wechat_avatar.py 
# 程序路徑要改成你電腦上的路徑
# -F 表示生成單個 exe 文件,方便運行

運行如下:


運行命令,1 分鐘左右若顯示 successfully 字樣表示程序打包成功:


接著在程序目錄下找到 wechat_avatar.exe 文件,然后按照第一種方法那樣運行就行了。

總結

以上所述是小編給大家介紹的Python 一鍵制作微信好友圖片墻的方法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網站的支持!
如果你覺得本文對你有幫助,歡迎轉載,煩請注明出處,謝謝!

相關文章

  • Python提取Linux內核源代碼的目錄結構實現(xiàn)方法

    Python提取Linux內核源代碼的目錄結構實現(xiàn)方法

    下面小編就為大家?guī)硪黄狿ython提取Linux內核源代碼的目錄結構實現(xiàn)方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-06-06
  • Python基礎之字符串操作常用函數集合

    Python基礎之字符串操作常用函數集合

    這篇文章主要介紹了Python基礎之字符串操作常用函數集合,需要的朋友可以參考下
    2020-02-02
  • 關于pytest結合csv模塊實現(xiàn)csv格式的數據驅動問題

    關于pytest結合csv模塊實現(xiàn)csv格式的數據驅動問題

    這篇文章主要介紹了pytest結合csv模塊實現(xiàn)csv格式的數據驅動,使用python中的csv模塊來處理csv文件,結合pygtest的參數化處理方式來實現(xiàn)ddt,本文通過示例代碼給大家介紹的非常詳細,需要的朋友參考下吧
    2022-05-05
  • Python模塊Typing.overload的使用場景分析

    Python模塊Typing.overload的使用場景分析

    在 Python 中,typing.overload 是一個用于定義函數重載的裝飾器,函數重載是指在一個類中可以定義多個相同名字但參數不同的函數,使得在調用函數時可以根據參數的不同選擇不同的函數執(zhí)行,這篇文章主要介紹了Python模塊Typing.overload的使用,需要的朋友可以參考下
    2024-02-02
  • Python PyQt5學習之自定義信號

    Python PyQt5學習之自定義信號

    PyQ5已經自動定義了很多QT自建的信號。但是在實際的使用中為了靈活使用信號與槽機制,可以根據需要自定義信號。本文就將為大家詳細講講PyQt5自定義信號,感興趣的可以了解一下
    2022-03-03
  • 玩轉Python發(fā)短信的實現(xiàn)

    玩轉Python發(fā)短信的實現(xiàn)

    用Python實現(xiàn)發(fā)短信功能,當監(jiān)控到問題出現(xiàn)時,短信報警,使問題能得到及時的處理。當然,我相信,用Python發(fā)短信應用場景不止此一處,下面我們開始Python發(fā)短信的實現(xiàn),感興趣的朋友參考下吧
    2022-01-01
  • Django中模版的子目錄與include標簽的使用方法

    Django中模版的子目錄與include標簽的使用方法

    這篇文章主要介紹了Django中模版的子目錄與include標簽的使用方法,有利于Python的Django框架的模版布局,需要的朋友可以參考下
    2015-07-07
  • PyTorch加載模型model.load_state_dict()問題及解決

    PyTorch加載模型model.load_state_dict()問題及解決

    這篇文章主要介紹了PyTorch加載模型model.load_state_dict()問題及解決,具有很好的參考價值,希望對大家有所幫助。
    2023-02-02
  • Python手動實現(xiàn)Hough圓變換的示例代碼

    Python手動實現(xiàn)Hough圓變換的示例代碼

    Hough圓變換的原理相信大家都非常清楚了,但是手動實現(xiàn)的比較少。這篇文章將為大家介紹手動實現(xiàn)Hough圓變換的示例代碼,需要的可以了解一下
    2022-01-01
  • Python中使用threading.Event協(xié)調線程的運行詳解

    Python中使用threading.Event協(xié)調線程的運行詳解

    這篇文章主要介紹了Python中使用threading.Event協(xié)調線程的運行詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-05-05

最新評論