仔細看下圖,你的頭像就藏在裏面哦!!!python
有沒有犯密集恐懼症?這並不震撼,若是你有 5000 位好友的話,作出來的圖看着會更刺激些。微信
看完了圖,你可能想知道這個圖咋作出來的,不會是我閒着無聊把把好友頭像一個個保存下來再用 PS 拼的吧?函數
天然不是了,Python 作的,是否是以爲沒有 Python 幹不了的事兒。其實,這種圖很早就有人玩過了,不過下面仍是來講說怎麼作出來,這樣你能夠作一個本身的微信好友圖片牆,拿去朋友圈裝裝逼。code
有兩種方法,一種簡單的,不用接觸 Python 代碼,一種稍微複雜點,須要寫代碼。blog
先說簡單的方法,只須要兩步:運行程序而後掃微信二維碼就好了。剩下的交給程序本身蹦躂,泡杯茶在電腦前等待幾分鐘左右就能夠獲得圖片,具體的等待時間視微信好友數量而不一樣,我近 500 好友,用時 5 分鐘左右。圖片
幾分鐘後就能夠獲得上面的圖片了。ip
其實到這兒就完了,是否是很簡單。get
你要感興趣怎麼實現的,能夠往下看用 Python 代碼怎麼實現的,代碼不長,60 行就能夠搞定。it
核心是利用如下兩個庫:pip
程序經過三個函數實現,第一個 create_file_path 函數生成圖片下載文件路徑,第二個 save_wx_avater 函數循環獲取微信好友頭像而後保存到本地,第三個 joint_wx_avatar 函數就是把頭像拼接成一張大圖。
完整代碼以下:
from wxpy import * import math from PIL import Image import os # 建立頭像存放文件夾 def create_file_path(): avatar_dir = os.path.join(os.getcwd(), 'wechat') if not os.path.exists(avatar_dir): os.mkdir(avatar_dir) return avatar_dir # 保存好友頭像 def save_wx_avater(avatar_dir): # 初始化機器人,掃碼登錄 bot = Bot(cache_path=True) friends = bot.friends(update=True) num = 0 for friend in friends: friend.get_avatar(os.path.join(avatar_dir, f'{str(num)}.jpg')) print('好友暱稱:%s' % friend.nick_name) num = num + 1 # 拼接頭像 def joint_wx_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(os.path.join(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 Exception as e: print(F"頭像讀取失敗,錯誤:{e}") img = image.save(os.path.join(os.getcwd(), 'wechat.png')) print('微信好友頭像拼接完成!') if __name__ == '__main__': avatar_dir = create_file_path() save_wx_avater(avatar_dir) joint_wx_avatar(avatar_dir)
能夠直接在運行程序文件,也能夠用 Pyinstaller 文件打包後運行,我這裏就不介紹 pipenv+pyinstaller 打包的方法了,有興趣的自行百度。
以上就是用 Python 製做微信好友圖片牆的裝逼指南。