來!把 5000 微信好友頭像拼成一張圖!

作者 | 蘇克1900

本文經授權轉載自高階農民工(ID:Mocun6)

先PO一張圖。

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

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

自然不是了,Python 做的,是不是覺得沒有 Python 幹不了的事兒。其實,這種圖很早就有人玩過了,不過下面還是來說說怎麼做出來,這樣你可以做一個自己的微信好友圖片牆,拿去朋友圈裝裝逼。

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

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

一個簡單的操作示意圖:

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

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

你要感興趣怎麼實現的,可以往下看用 Python 程式碼怎麼實現的,程式碼不長,60 行就可以搞定。

核心是利用三個個庫:

程式通過三個函式實現,第一個 creat_filepath 函式生成圖片下載檔案路徑,第二個 save_avatar 函式迴圈獲取微信好友頭像然後儲存到本地,第三個 joint_avatar 函式就是把頭像拼接成一張大圖。

完整程式碼如下:

1# -*- coding: utf-8 -*-

2fromwxpy import*

3importmath

4fromPIL importImage

5importos

6

7# 建立頭像存放資料夾

8defcreat_filepath():

9avatar_dir = os.getcwd() + “wechat”

10ifnotos.path.exists(avatar_dir):

11os.mkdir(avatar_dir)

12returnavatar_dir

13

14# 儲存好友頭像

15defsave_avatar(avatar_dir):

16# 初始化機器人,掃碼登陸

17bot = Bot()

18friends = bot.friends(update= True)

19num = 0

20forfriend infriends:

21friend.get_avatar(avatar_dir + + str(num) + “.jpg”)

22print( ‘好友暱稱:%s’% friend.nick_name)

23num = num + 1

24

25# 拼接頭像

26defjoint_avatar(path):

27# 獲取資料夾內頭像個數

28length = len(os.listdir(path))

29# 設定畫布大小

30image_size = 2560

31# 設定每個頭像大小

32each_size = math.ceil( 2560/ math.floor(math.sqrt(length)))

33# 計算所需各行列的頭像數量

34x_lines = math.ceil(math.sqrt(length))

35y_lines = math.ceil(math.sqrt(length))

36image = Image.new( ‘RGB’, (each_size * x_lines, each_size * y_lines))

37x = 0

38y = 0

39for(root, dirs, files) inos.walk(path):

40forpic_name infiles:

41# 增加頭像讀取不出來的異常處理

42try:

43withImage.open(path + pic_name) asimg:

44img = img.resize((each_size, each_size))

45image.paste(img, (x * each_size, y * each_size))

46x += 1

47ifx == x_lines:

48x = 0

49y += 1

50exceptIOError:

51print( “頭像讀取失敗”)

52

53img = image.save(os.getcwd() + “/wechat.png”)

54print( ‘微信好友頭像拼接完成!’)

55

56if__name__ == ‘__main__’:

57avatar_dir = creat_filepath()

58save_avatar(avatar_dir)

59joint_avatar(avatar_dir)

可以直接在執行程式檔案,也可以用 Pyinstaller 檔案打包後執行。這裡額外說一下 pyinstaller 打包的方法和閉坑指南。

不要直接在系統中用 pyinstaller 打包,否則打包出來的 exe 檔案會很大。建議在虛擬環境中打包,打包出來的 exe 檔案會小很多, 10MB 左右。

虛擬環境建立很簡單,簡單說一下步驟:

1 安裝 pipenv 和 pyinstaller 包,用於後續建立虛擬環境和打包程式:

1pip install pipenv

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

2 選擇一個合適的目錄作為 Python 虛擬環境,執行:

1pipenv install # 建立虛擬環境

2pipenv shell # 建立好後,進入虛擬環境

3 安裝程式引用的庫。

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

1pipenv install wxpy math os

4 這裡要額外注意 PIL 的安裝,現在不用 PIL 庫,而是用 Pillow 庫取代,

所以安裝 Pillow 庫就行。但不要安裝最新的 6.0.0 版本,

1OSError: cannot identify image file <ImageFieldFile: images

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

5 然後打包程式就可以了:

1pyinstaller -F C:UserssonyDesktopwechat_avatar.py

2# 程式路徑要改成你電腦上的路徑

3# -F 表示生成單個 exe 檔案,方便執行

執行如下:

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

接著在程式目錄下找到 wechat_avatar.exe 檔案,然後按照第一種方法那樣執行就行了。

以上就是用 Python 製作微信好友圖片牆的裝逼指南。

文中程式碼可以在下面的連結中獲取:https://github.com/makcyun/eastmoney_spider。

作者簡介:蘇克,985 碩士轉行 Python,熱愛爬蟲、資料分析和挖掘,本文首發於個人公眾號「mocun6」。

【End】

“點個在看吧!”);

“點個看吧!”);

print(“點個看吧!”);

printf(“點個看吧!n”);

cout << “點個看吧!”<< endl;

“點個看吧!”);

“點個看吧!”);

alert(“點個看吧!”)

Comments

comments

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *