# -*- coding: utf-8 -*-
"""
Created on Thu Jul 5 19:04:15 2018
@author: Administrator
"""
import itchat
import re
import os
itchat.login() #弹出二维码,扫描登录微信
friends = itchat.get_friends(update=True)[0:]
NickName = friends[0].NickName #获取自己的昵称
tList = [] #空列表
##friendsss=friends[12:112] #把第12到底112个好友的信息传给friendsss
for i in friends: ##循环,从friends[0]到最后一个好友
#Signature是指微信好友的签名,后面的replace是替换函数分别指去掉符号'空格' '°' 编号(不确定) 和 表情
signature = i["Signature"].replace(" ", "").replace("span", "").replace("class", "").replace("emoji", "")
rep = re.compile("1f\d.+") #使用一个正则表达式对文本进行处理
signature = rep.sub("", signature) #一种字符替换函数,相当于前面的replace,但参数,用法不同
tList.append(signature) #把对象signature添加到tList末尾
# 拼接字符串 ""里面指分隔符
text = "".join(tList)
# jieba分词
import jieba
#全模式分词
wordlist_jieba = jieba.cut(text, cut_all=True)
#空格连接
wl_space_split = " ".join(wordlist_jieba)
# wordcloud词云
import matplotlib.pyplot as plt
from wordcloud import WordCloud, ImageColorGenerator
import numpy as np
import PIL.Image as Image
#返回文件的绝对路径
d= os.path.dirname(os.path.abspath( __file__ ))
#os.path.join(d, "0.jpg") #返回文件0.jpg的绝对路径(具体到比如C:\windows\0.jpg)
alice_coloring = np.array(Image.open(os.path.join(d, "xin.jpg")))
#设置wordcloud的各种参数
my_wordcloud = WordCloud(
background_color="white",#设置背景着色,改颜色下不显示词
max_words=1000,#设置最大显示字数
mask=alice_coloring,#设置背景图片
max_font_size=400,#字体最大值
random_state=500,#设置生成方案,即配色方案
font_path='C:\shiqisuidxiatian.ttf').generate(wl_space_split) #导入字体和文本,.generate(d) 是指导入文本、引用制作词云的文本,d是文本
# 从背景图片生成颜色值
image_colors = ImageColorGenerator(alice_coloring)
# 重新着色 recolor(color_func=是格式,不用变
plt.imshow(my_wordcloud.recolor(color_func=image_colors))
plt.imshow(my_wordcloud)
file_name_p = NickName+'4.jpg' #文件命名
my_wordcloud.to_file(file_name_p) #保存图片
plt.axis("off")
plt.show()
注意点:
1.xin.jpg是导入背景图片的图片,根据自己的图片名做更改,和程序放同一个文件夹下
2.font_path是导入字体位置,字体最好放c盘
3.文件命名是保存的图片的的名字,后面的'4.jpg'根据需要自行修改