用 Python 代碼怎么實(shí)現(xiàn)的,代碼不長,60 行就可以搞定。
核心是利用三個(gè)個(gè)庫:
wxpy 庫,用于獲取好友頭像然后下載
Pillow 庫,用于拼接頭像
Pyinstaller 庫,用來打包 Python 程序成 exe 文件
程序通過三個(gè)函數(shù)實(shí)現(xiàn),第一個(gè) creat_filepath 函數(shù)生成圖片下載文件路徑,第二個(gè) save_avatar 函數(shù)循環(huán)獲取微信好友頭像然后保存到本地,第三個(gè) joint_avatar 函數(shù)就是把頭像拼接成一張大圖。
完整代碼如下:
from wxpy import *
import math
from PIL import Image
import os
'''
遇到python不懂的問題,可以加Python學(xué)習(xí)交流群:1004391443一起學(xué)習(xí)交流,群文件還有零基礎(chǔ)入門的學(xué)習(xí)資料
'''
# 創(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):
# 初始化機(jī)器人,掃碼登陸
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):
# 獲取文件夾內(nèi)頭像個(gè)數(shù)
length = len(os.listdir(path))
# 設(shè)置畫布大小
image_size = 2560
# 設(shè)置每個(gè)頭像大小
each_size = math.ceil(2560 / math.floor(math.sqrt(length)))
# 計(jì)算所需各行列的頭像數(shù)量
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)
可以直接在運(yùn)行程序文件,也可以用 Pyinstaller 文件打包后運(yùn)行。這里額外說一下 pyinstaller 打包的方法和閉坑指南。
不要直接在系統(tǒng)中用 pyinstaller 打包,否則打包出來的 exe 文件會(huì)很大。建議在虛擬環(huán)境中打包,打包出來的 exe 文件會(huì)小很多, 10MB 左右。
虛擬環(huán)境創(chuàng)建很簡單,簡單說一下步驟:
1 安裝 pipenv 和 pyinstaller 包,用于后續(xù)創(chuàng)建虛擬環(huán)境和打包程序:
pip install pipenv
pip install pyinstaller # 已安裝就不用安裝了
2 選擇一個(gè)合適的目錄作為 Python 虛擬環(huán)境,運(yùn)行:
pipenv install # 創(chuàng)建虛擬環(huán)境
pipenv shell # 創(chuàng)建好后,進(jìn)入虛擬環(huán)境
3 安裝程序引用的庫,上面程序引用了四個(gè)庫:wxpy、math、os 和 PIL,一行代碼就可以完成安裝。
pipenv install wxpy math os
4 這里要額外注意 PIL 的安裝,現(xiàn)在不用 PIL 庫,而是用 Pillow 庫取代,所以安裝 Pillow 庫就行。但不要安裝最新的 6.0.0 版本,否則可能會(huì)遇到各種錯(cuò)誤,例如:PIL 無法識(shí)別下載的 jpg 頭像文件。
OSError: cannot identify image file <ImageFieldFile: images
正確的安裝方法是安裝低版本,經(jīng)嘗試安裝 4.2.1 版本沒有問題,安裝命令:
pipenv install Pillow==4.2.1
5 然后打包程序就可以了:
pyinstaller -F C:\Users\sony\Desktop\wechat_avatar.py
# 程序路徑要改成你電腦上的路徑
# -F 表示生成單個(gè) exe 文件,方便運(yùn)行
運(yùn)行如下:
運(yùn)行命令,1 分鐘左右若顯示 successfully 字樣表示程序打包成功:
接著在程序目錄下找到 wechat_avatar.exe 文件,然后按照第一種方法那樣運(yùn)行就行了。
本站文章版權(quán)歸原作者及原出處所有 。內(nèi)容為作者個(gè)人觀點(diǎn), 并不代表本站贊同其觀點(diǎn)和對其真實(shí)性負(fù)責(zé),本站只提供參考并不構(gòu)成任何投資及應(yīng)用建議。本站是一個(gè)個(gè)人學(xué)習(xí)交流的平臺(tái),網(wǎng)站上部分文章為轉(zhuǎn)載,并不用于任何商業(yè)目的,我們已經(jīng)盡可能的對作者和來源進(jìn)行了通告,但是能力有限或疏忽,造成漏登,請及時(shí)聯(lián)系我們,我們將根據(jù)著作權(quán)人的要求,立即更正或者刪除有關(guān)內(nèi)容。本站擁有對此聲明的最終解釋權(quán)。