使用itchat库,实现微信的登录和好友信息的获取,将获取的好友头像进行拼接生成照片墙,拼接时加限制条件生成心形照片墙,

获取好友个性签名生成词云。

涉及:

1. itchat的简单使用

2. 图像拼接

3. 按照指定规则进行图像拼接,生成心形图像

4. wordcloud生成词云

详解:

  • 相关库的安装

pip install itchat     微信接口模块

pip install wordcloud    词云模块

pip install jieba      jieba分词模块

  • 登录微信,获取好友头像及个性签名

    def get_wechat(self):try:# 加上hotReload=True,就会保留登录的状态,至少在后面的几次登录过程中不会再次扫描二维码,# 该参数生成一个静态文件itchat.pkl用于存储登录状态# itchat.auto_login(hotReload=True)# 扫码登录itchat.auto_login()except:print("请检查网络,再重试")# 获取微信好友friends = itchat.get_friends(update=True)# 创建photo_image文件夹来保存微信头像图片if not os.path.exists('photo_image'):# 若文件夹不存在,则创建目录os.mkdir('photo_image')num=0for friend in friends:# 根据用户名获取对应的微信头像img=itchat.get_head_img(userName=friend['UserName'])# 图片路径名img_name=''.join(['photo_image/img',str(num),'.jpg'])# 保存图片with open(img_name,'wb') as f:f.write(img)num+=1# 获取生成词云需要的所有好友的个性签名signature=friend['Signature'].strip()# 剔除个性签名为空以及含span标签的,将所有签名通过空格拼成字符串if len(signature)>0 and not '<span class=' in signature:self.signature_txt+=signature+' '
  • 拼接头像,生成照片墙

    def merge_image(self):# 获取指定路径下的文件列表all_image=os.listdir('photo_image')# 设定每个头像的大小each_size=int(math.sqrt(float(1024*1024)/len(all_image)))# 照片墙的行数lines=int(1024/each_size)print(lines)# 创建Image对象,初始化大小image=Image.new('RGBA',(1024,1024))x,y=0,0for i in range(len(all_image)):try:img = Image.open(''.join(['photo_image/img', str(i), '.jpg']))# 重新设置图像大小img = img.resize((each_size, each_size), Image.ANTIALIAS)# 根据x,y坐标位置拼接图像image.paste(img, (x * each_size, y * each_size))# 更新下一张图像位置x += 1except:passfinally:# 一行一行拼接if x == lines:x = 0y += 1# 保存生成的照片墙# RGBA意思是红色,绿色,蓝色,Alpha的色彩空间,Alpha指透明度。而JPG不支持透明度,所以要么丢弃Alpha,要么保存为.png文件image.save('photo_image/photo_wall.png')itchat.send_msg('好友头像照片墙', 'filehelper')# 发送图像到微信文件传输助手,打开手机微信可查看itchat.send_image('photo_image/photo_wall.png','filehelper')
  • 心形函数

在直角坐标系中,爱心线的方程的python 表达为:

x** 2+ y** 2 + a * x= a * sqrt(x** 2+y** 2) 

x** 2+ y** 2 - a * x= a * sqrt(x** 2+y** 2)

# 计算心形,判断图像的坐标是否在心形函数内@classmethoddef get_heart_shape(cls,x,y):y1 = 0.618 * np.abs(x) - 0.7 * np.sqrt(262144 - x ** 2)y2 = 0.618 * np.abs(x) + 0.7 * np.sqrt(262144 - x ** 2)if y<y1 or y>y2:return Falseelse:return True
  • 拼接心形照片墙

# 拼接为心形照片墙def merge_love_image(self):# 获取指定路径下的文件列表all_image=os.listdir('photo_image')# 设定每个头像的大小each_size=int(math.sqrt(float(1024*1024)/len(all_image)))# 一行的图像个数,若为偶数个,则+1转换为奇数个,修改每个图像的大小,使最后的心形对称好看num=int(1024/each_size)if num%2==0:num+=1each_size=int(1024/num)# 照片墙的行数lines=int(1024/each_size)print(lines)# 创建Image对象,初始化大小,其大小不直接设定为(1024*1024),因为照片拼接出的尺寸不是正好等于1024,故用实际拼接的尺寸image=Image.new('RGBA',(lines*each_size,lines*each_size))x,y=0,0for i in range(len(all_image)):try:# 由于图像坐标从(0,0)开始,而心形函数对应左上角坐标为(-512,512),故此在判断坐标时,稍作转换is_heart_part=self.get_heart_shape(-512+x * each_size,512-y * each_size)if not is_heart_part:passelse:img = Image.open(''.join(['photo_image/img', str(i), '.jpg']))# 重新设置图像大小img = img.resize((each_size, each_size), Image.ANTIALIAS)# 根据x,y坐标位置拼接图像image.paste(img, (x * each_size, y * each_size))# 更新下一张图像位置x += 1except:passfinally:# 一行一行拼接if x == lines:x = 0y += 1
  • 个性签名生成词云

# 生成词云def get_wordcloud(self):try:image = np.array(Image.open('./namei.jpeg'))# jieba分词signature_txt_list = jieba.cut(self.signature_txt, cut_all=False)jieba_txt = ' '.join(signature_txt_list)# 生成词云wordcloud = WordCloud(font_path=r'C:\Windows\Fonts\msyh.ttc',  # 调用系统自带字体(微软雅黑)background_color='white',  # 背景色max_words=500,  # 最大显示单词数max_font_size=60,  # 频率最大单词字体大小mask=image  # 自定义显示的效果图).generate(jieba_txt)plt.imshow(wordcloud, interpolation='bilinear')plt.axis('off')plt.show()# 保存为图片wordcloud.to_file('./signature_wordcloud.png')itchat.send_msg('好友个性签名词云', 'filehelper')# tips: 发送的图片名称必须为英文,若为中文,会发送失败itchat.send_image('signature_wordcloud.png', 'filehelper')except:print('词云生成失败,请重试')

运行结果:

运行程序,弹出二维码,扫描登录

等待图像下载拼接,结果将发送到微信的文件传输助手

直接拼接的照片墙

心形图

心形照片墙

个性签名词云

背景图

词云

python生成微信好友头像心形照片墙相关推荐

  1. 用python做头像_如何利用python制作微信好友头像照片墙?

    这个不难,主要用到itchat和pillow这2个库,其中itchat用于获取微信好友头像照片,pillow用于拼接头像生成一个照片墙,下面我简单介绍一下实现过程,代码量不多,也很好理解,实验环境wi ...

  2. python表白代码照片墙-如何利用python制作微信好友头像照片墙?

    这个不难,主要用到itchat和pillow这2个库,其中itchat用于获取微信好友头像照片,pillow用于拼接头像生成一个照片墙,下面我简单介绍一下实现过程,代码量不多,也很好理解,实验环境wi ...

  3. 用Python一键生成微信好友头像墙

    前言 用 python 代码写了一个一键生成合成微信好友头像的程序,效果如下: 不会写代码?没关系!只要你会使用电脑就 ok! 因为除了用代码方式生成外,还建了一个 .exe 的程序,在电脑点击运行就 ...

  4. python获取微信好友头像拼接“2020”

    python获取微信好友头像拼接"2020" 背景 思路 源码说明 背景 2019年的最后一天,心想马上就要跨年,大家都在总结和祝福,但是又不想随大流,打开微信,翻看着通讯录,突然 ...

  5. Python爬微信好友头像,性别,所在地区

    Python爬微信好友头像,性别,所在地区 本文适合新手(有一定基础的小白) 今天没事,用的网页版微信,于是看源码心理作怪,F12打开,研究了一下,结果发现 /斜眼笑/斜眼笑/斜眼笑 再加上,没事干, ...

  6. 高手用Python一键生成微信好友头像墙

    用 python 代码写了一个一键生成合成微信好友头像的程序,效果如下: 不会写代码?没关系!只要你会使用电脑就 ok! 因为除了用代码方式生成外,还建了一个 .exe 的程序,在电脑点击运行就完事了 ...

  7. [533]python获取微信好友头像生成点阵图片

    首先是点阵字的概念:点阵字体是把每一个字符都分成 n * n 个点,然后用每个点的虚实来表示字符的轮廓.点阵字体也叫位图字体,其中每个字形都以一组二维像素信息表示. 汉字那么多,总不能每个字都去自己设 ...

  8. Python实现一键生成微信好友头像墙

    效果图: 具体代码实现如下: # -*- coding: utf-8 -*- from wxpy import * import math from PIL import Image import o ...

  9. 只需四步,让你成为朋友圈的焦点----Python制作微信好友头像墙

    今天带给大家一波实力干货,让你分分钟成为朋友圈的红人.焦点! 先来张效果图感受一下! 怎么样,是不是很爽! 链接在这↓ 链接:https://pan.baidu.com/s/1qhRkkLPLdZqE ...

最新文章

  1. pyqtdeploy教程_PyQtdeploy-V2.4 User Guide 中文 (一)
  2. 宏基因组蚂蚁森林合种——胡杨专车
  3. AI研习丨专题:因果推断与因果性学习研究进展
  4. 文档管理服务器文件的脱机编辑选项无法编辑,让MOSS2007文档的存取更具个性
  5. WPF命中测试示例(二)——几何区域命中测试
  6. 《数据库SQL实战》找出所有员工当前薪水salary情况
  7. 查询缓存---Mybatis学习笔记(十)
  8. [实战]Router configuration for TP ROOM
  9. 机器学习作业班_python实现逻辑回归多类分类
  10. MESOS集群高可用部署
  11. 如何用wps自动生成目录,你学会了吗?
  12. Qt5之图形视图框架(一)
  13. 用 PHP-GTK2 做 Win32 GUI 程序
  14. Python web框架Django学习(1)
  15. 【学习路线】2022届校招C++后端服务器开发/实习,个人学习路线总结/记录
  16. [推荐] 一个 Node.js 技术选型案例:使用 CARMEN 作为卡牌手游技术栈
  17. 商业虚拟专用网络技术十四 BGP/MPLS技术扩展
  18. 软件需求与分析需要掌握的内容
  19. 宝塔面板网站一打开cpu百分百_解决宝塔面板CPU占满100%,负载100%网站缓慢等问题...
  20. 第三方邮件、短信服务

热门文章

  1. 有理函数在计算机中的应用,有理函数
  2. arduino uno电压_了解Arduino UNO电路
  3. HDMI中继器,HDMI延长器支持更远音视频信号的传输
  4. 实现EasyExcel对Excel读操作(读操作)
  5. 管道检测机器人解决管道现有困境
  6. 2022年危险化学品生产单位安全生产管理人员考试及危险化学品生产单位安全生产管理人员新版试题
  7. Less的简单介绍、使用、语法
  8. 【大一】一名普通大一学生对未来的简单的规划和想法
  9. 亿发软件:中医药信息一体化解决方案,智慧中药房煎配系统
  10. Visual Paradigm 在线UML图表工具介绍