一键拼出你的微信好友图片墙!
點擊“小詹學Python”,選擇“置頂”公眾號
重磅干貨,第一時間送達
本文轉載自高級農民工,禁二次轉載
上午發了張微信近 2000 位好友的頭像拼圖,讓大伙兒看能不能快速找到自己的頭像,沒想到反響很強烈,引得陣陣驚呼與膜拜,沒有料到。
有沒有犯密集恐懼癥?這并不震撼,如果你有 5000 位好友的話,做出來的圖看著會更刺激些。
看完了圖,你可能想知道這個圖咋做出來的,不會是我閑著無聊把把好友頭像一個個保存下來再用 PS 拼的吧?
自然不是了,Python 做的,是不是覺得沒有 Python 干不了的事兒。其實,這種圖很早就有人玩過了,不過下面還是來說說怎么做出來,這樣你可以做一個自己的微信好友圖片墻,拿去朋友圈裝裝逼。
有兩種方法,一種簡單的,不用接觸 Python 代碼,一種稍微復雜點,需要寫代碼。
先說簡單的方法,只需要兩步:運行程序然后掃微信二維碼就行了。剩下的交給程序自己蹦跶,泡杯茶在電腦前等待幾分鐘左右就可以得到圖片,具體的等待時間視微信好友數量而不同,我近 2000 好友,用時 10 分鐘左右。
一個簡單的操作示意圖:
幾分鐘后就可以得到上面的圖片了。
其實到這兒就完了,是不是很簡單。
你要感興趣怎么實現的,可以往下看用 Python 代碼怎么實現的,代碼不長,60 行就可以搞定。
核心是利用三個個庫:
wxpy 庫,用于獲取好友頭像然后下載
Pillow 庫,用于拼接頭像
Pyinstaller 庫,用來打包 Python 程序成 exe 文件
程序通過三個函數實現,第一個 creat_filepath 函數生成圖片下載文件路徑,第二個 save_avatar 函數循環獲取微信好友頭像然后保存到本地,第三個 joint_avatar 函數就是把頭像拼接成一張大圖。
完整代碼如下:
1#?-*-?coding:?utf-8?-*-2from?wxpy?import?*
3import?math
4from?PIL?import?Image
5import?os
6
7#?創建頭像存放文件夾
8def?creat_filepath():
9????avatar_dir?=?os.getcwd()?+?"\\wechat\\"
10????if?not?os.path.exists(avatar_dir):
11????????os.mkdir(avatar_dir)
12????return?avatar_dir
13
14#?保存好友頭像
15def?save_avatar(avatar_dir):
16????#?初始化機器人,掃碼登陸
17????bot?=?Bot()
18????friends?=?bot.friends(update=True)
19????num?=?0
20????for?friend?in?friends:
21????????friend.get_avatar(avatar_dir?+?'\\'?+?str(num)?+?".jpg")
22????????print('好友昵稱:%s'?%?friend.nick_name)
23????????num?=?num?+?1
24
25#?拼接頭像
26def?joint_avatar(path):
27????#?獲取文件夾內頭像個數
28????length?=?len(os.listdir(path))
29????#?設置畫布大小
30????image_size?=?2560
31????#?設置每個頭像大小
32????each_size?=?math.ceil(2560?/?math.floor(math.sqrt(length)))
33????#?計算所需各行列的頭像數量
34????x_lines?=?math.ceil(math.sqrt(length))
35????y_lines?=?math.ceil(math.sqrt(length))
36????image?=?Image.new('RGB',?(each_size?*?x_lines,?each_size?*?y_lines))
37????x?=?0
38????y?=?0
39????for?(root,?dirs,?files)?in?os.walk(path):
40????????for?pic_name?in?files:
41????????????#?增加頭像讀取不出來的異常處理
42????????????????try:
43????????????????????with?Image.open(path?+?pic_name)?as?img:
44????????????????????????img?=?img.resize((each_size,?each_size))
45????????????????????????image.paste(img,?(x?*?each_size,?y?*?each_size))
46????????????????????????x?+=?1
47????????????????????????if?x?==?x_lines:
48????????????????????????????x?=?0
49????????????????????????????y?+=?1
50????????????????except?IOError:
51????????????????????print("頭像讀取失敗")
52
53????img?=?image.save(os.getcwd()?+?"/wechat.png")
54????print('微信好友頭像拼接完成!')
55
56if?__name__?==?'__main__':
57????avatar_dir?=?creat_filepath()
58????save_avatar(avatar_dir)
59????joint_avatar(avatar_dir)
可以直接在運行程序文件,也可以用 Pyinstaller 文件打包后運行。這里額外說一下 pyinstaller 打包的方法和閉坑指南。
不要直接在系統中用 pyinstaller 打包,否則打包出來的 exe 文件會很大。建議在虛擬環境中打包,打包出來的 exe 文件會小很多, 10MB 左右。
虛擬環境創建很簡單,簡單說一下步驟:
1 安裝 pipenv 和 pyinstaller 包,用于后續創建虛擬環境和打包程序:
1pip?install?pipenv2pip?install?pyinstaller?#?已安裝就不用安裝了
2 選擇一個合適的目錄作為 Python 虛擬環境,運行:
1pipenv?install?#?創建虛擬環境2pipenv?shell?#?創建好后,進入虛擬環境
3 安裝程序引用的庫,上面程序引用了四個庫:wxpy、math、os 和 PIL,一行代碼就可以完成安裝。
1pipenv?install?wxpy?math?os4 這里要額外注意 PIL 的安裝,現在不用 PIL 庫,而是用 Pillow 庫取代,所以安裝 Pillow 庫就行。但不要安裝最新的 6.0.0 版本,否則可能會遇到各種錯誤,例如:PIL 無法識別下載的 jpg 頭像文件。
1OSError:?cannot?identify?image?file?<ImageFieldFile:?images正確的安裝方法是安裝低版本,經嘗試安裝 4.2.1 版本沒有問題,安裝命令:
1pipenv?install?Pillow==4.2.15 然后打包程序就可以了:
1pyinstaller?-F?C:\Users\sony\Desktop\wechat_avatar.py?2#?程序路徑要改成你電腦上的路徑
3#?-F?表示生成單個?exe?文件,方便運行
運行如下:
運行命令,1 分鐘左右若顯示 successfully 字樣表示程序打包成功:
接著在程序目錄下找到?wechat_avatar.exe?文件,然后按照第一種方法那樣運行就行了。
以上就是用 Python 制作微信好友圖片墻的裝逼指南。
后臺回復:「微信好友」就可以得到 exe 文件和 Python 程序。
總結
以上是生活随笔為你收集整理的一键拼出你的微信好友图片墙!的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一起来抱团刷题!
- 下一篇: 走在前沿的弄潮儿,怎能不会Git的那些奇