您好,登錄后才能下訂單哦!
這期內容當中小編將會給大家帶來有關Python如何讀取微信好友頭像并拼成祝福語九宮格,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
今天有位老哥過生日,結合著微信頭像和點陣字,搞了個頭像拼字的代碼,朋友圈九宮格效果如下:
其中,每個字都是16*16的點陣,點陣中每個點可以拆解為4個好友頭像圖片:
代碼中漢字文本可以自定義輸入,頭像圖片也可以是備好的其他圖片。怎么樣,比之前的點陣字是不是更酷了些?
思路
基本思路很直接:讀取微信好友頭像,按照漢字的點陣信息進行拼接,生成完整的單字圖片。
讀取微信好友頭像的思路上篇提到過:利用開源的微信接口itchat,掃碼登錄個人微信,讀取好友信息中的頭像存到本地。
獲取漢字的點陣信息也是按照之前的思路:利用漢字庫HZK16文件來實現。拿到點陣信息后,將背景圖片當做16*16點陣,用頭像圖片和空白來替代點陣中的點。這里為了提高字筆畫的豐富性,我采用一個點對應4個頭像圖片。
itchat
itchat是一個開源的微信個人號接口,使用python調用微信從未如此簡單。
首先是安裝 itchat庫,在代碼中import itchat,之后直接調用方法。
#通過二維碼登錄微信網頁版
itchat.auto_login()
#獲取微信好友信息列表
friendList = itchat.get_friends(update=True)
獲取頭像圖片
通過好友列表中的信息,讀取頭像圖片內容,存儲到本地,這樣就完成了頭像素材的獲取。
好友如果很多,這個階段耗時會較長。此外這個過程中發現有的好友可能沒有設置頭像、或者頭像格式比較特殊,會導致讀取失敗,這里要利用try except語法進行控制。
漢字轉點陣
點陣字體是把每一個字符都分成16×16或24×24個點,然后用每個點的虛實來表示字符的輪廓。點陣字體也叫位圖字體,其中每個字形都以一組二維像素信息表示
HZK16字庫是符合GB2312標準的16×16點陣字庫,支持的漢字有6763個,每個漢字模型需要16×16一共需要256個點來顯示。
頭像圖片拼接
每個頭像圖片統一裁剪為100*100的小方圖,16*16的點陣,每個點是2*2個頭像小方圖,即最終圖片為長16*2*100的方圖。
首先通過PIL模塊生成背景圖,可以設置自己喜歡的顏色:
#如果想要白色背景,將colorlist[index]改為'#FFFFFF'
canvas = Image.new('RGB', (3200, 3200), colorlist[index]) # 新建一塊畫布
根據漢字的點陣信息,控制是否將頭像圖片在該位置展現,最終生成頭像圖片拼接的單字大圖。
九宮格效果
微信朋友圈九宮格效果如下,首先是新年祝福:
還有張大吉大利吃雞九宮格:
回顧
用頭像來組字的想法產生挺久了,最開始是想自己設計字形根據筆畫來排列頭像圖片,覺得太辛苦就一直沒去做。最近接觸了點陣字并用代碼來展示后,才有了實現圖片組字的信心。
正好碰到朋友過生日,就用代碼送上一點心意,比較簡陋,但重在心意,感覺還是很不錯的。
關于點陣字,從最開始的用0和1來展示,到改變成特殊符號提高美感,再到用tkinter圖形界面以規范樣式,以及現在用圖片來拼點陣字,算是一個縱向自學的過程吧。可能重在樂子而非應用,但這個過程中,用心想了、盡力做了,權當對自己的一種鍛煉吧。
上述就是小編為大家分享的Python如何讀取微信好友頭像并拼成祝福語九宮格了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。