您好,登錄后才能下訂單哦!
wxpy、pyinstalller 庫的使用。
上午發(fā)了張我微信近 2000 位好友的頭像拼圖,讓大伙兒看能不能快速找到自己的頭像,沒想到反響很強烈,引得陣陣驚呼與膜拜,沒有料到。
有沒有犯密集恐懼癥?這并不震撼,如果你有 5000 位好友的話,做出來的圖看著會更刺激些。
看完了圖,你可能想知道這個圖咋做出來的,不會是我閑著無聊把把好友頭像一個個保存下來再用 PS 拼的吧?
自然不是了,Python 做的,是不是覺得沒有 Python 干不了的事兒。其實,這種圖很早就有人玩過了,不過下面還是來說說怎么做出來,這樣你也可以做一個自己微信好友的圖片墻。
有兩種方法,一種簡單的,不用接觸 Python 代碼,一種稍微復(fù)雜點,需要寫代碼。
先說簡單的方法,只需要兩步:運行程序然后掃微信二維碼就行了。剩下的交給程序自己蹦跶,泡杯茶在電腦前等待幾分鐘左右就可以得到圖片,具體的等待時間視微信好友數(shù)量而不同,我近 2000 好友,用時 10 分鐘左右。
一個簡單的操作示意圖:
幾分鐘后就可以得到上面的圖片了。
其實到這兒就完了,是不是很簡單。
你要感興趣怎么實現(xiàn)的,可以往下看用 Python 代碼怎么實現(xiàn)的,代碼不長,60 行就可以搞定。
核心是利用三個個庫:
程序通過三個函數(shù)實現(xiàn),第一個 creat_filepath 函數(shù)生成圖片下載文件路徑,第二個 save_avatar 函數(shù)循環(huán)獲取微信好友頭像然后保存到本地,第三個 joint_avatar 函數(shù)就是把頭像拼接成一張大圖。
完整代碼如下:
# -*- 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): # 獲取文件夾內(nèi)頭像個數(shù) length = len(os.listdir(path)) # 設(shè)置畫布大小 image_size = 2560 # 設(shè)置每個頭像大小 each_size = math.ceil(2560 / math.floor(math.sqrt(length))) # 計算所需各行列的頭像數(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)
可以直接在運行程序文件,也可以用 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
正確的安裝方法是安裝低版本,經(jīng)嘗試安裝 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
文件,然后按照第一種方法那樣運行就行了。
總結(jié)
以上所述是小編給大家介紹的Python 一鍵制作微信好友圖片墻的方法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對億速云網(wǎng)站的支持!
如果你覺得本文對你有幫助,歡迎轉(zhuǎn)載,煩請注明出處,謝謝!
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。