歡迎光臨
每天分享高質量文章

一鍵拼出你的微信好友圖片牆

來自:高階農民工(微訊號:Mocun6)

上午發了張微信近 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 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 版本,否則可能會遇到各種錯誤,例如:PIL 無法識別下載的 jpg 頭像檔案。

1OSError: cannot identify image file 

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

1pipenv install Pillow==4.2.1

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

1pyinstaller -F C:\Users\sony\Desktop\wechat_avatar.py 
2# 程式路徑要改成你電腦上的路徑
3# -F 表示生成單個 exe 檔案,方便執行

執行如下:

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

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

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

    已同步到看一看
    贊(0)

    分享創造快樂