前言

相信微信大家是用得再多也不过了。那么,对于python+微信,又能玩出什么新的花样呢?下面小编就给大家带来一个好玩的东西。用python下载所有的微信好友的头像,然后拼接成一张大图。这样,大家就可以转载到朋友圈装XY了。哈哈。

还是先给大家看看效果图如何。毕竟无图言X。

PS:图侵删。这不是小编的微信哈……

好了废话不多说,看看我们是怎么一步一步做出来的吧。

下载微信好友头像

第一步当然是下载微信好友的头像,然后才能进行拼接。这里我们用到了itchat这个python的库。关于这个库,更多好玩的东西我们在后期会推出的,大家敬请关注and期待就好了。先看代码:

 1itchat.auto_login()
2for friend in itchat.get_friends(update=True)[0:]:
3    #可以用此句print查看好友的微信名、备注名
4    print(friend['NickName']+"("+friend['RemarkName']+")")
5    img = itchat.get_head_img(userName=friend["UserName"])
6    path = headImgPath+friend['NickName']+"("+friend['RemarkName']+").jpg"
7    try:
8        with open(path,'wb') as f:
9            f.write(img)
10    except Exception as e:
11        print(repr(e))

代码灰常简单。首先我们调用itchat.auto_login()进行微信登陆。

扫码登陆成功以后,我们再获取好友,然后获取头像,再配置一下文件保存路径,最后把头像写入文件里面。是不是简单到难以置信?

拼接好友头像

拼接我们用了PIL库里面的Image模块。代码看下面:

 1pathList = []
2# os.listdir() 方法用于返回指定的文件夹包含的文件或文件夹的名字的列表。这个列表以字母顺序。 它不包括 '.' 和'..' 即使它在文件夹中。
3for item in os.listdir(headImgPath):
4    imgPath = os.path.join(headImgPath, item)
5    pathList.append(imgPath)
6
7total = len(pathList)#total是好友头像图片总数
8line = int(sqrt(total))#line是拼接图片的行数(即每一行包含的图片数量)
9NewImage = Image.new('RGB', (128*line,128*line))
10x = y = 0
11for item in pathList:
12    try:
13        img = Image.open(item)
14        # Image.ANTIALIAS:平滑滤波。对所有可以影响输出像素的输入像素进行高质量的重采样滤波,以计算输出像素值。
15        img = img.resize((128,128),Image.ANTIALIAS)
16        NewImage.paste(img, (x * 128 , y * 128))
17        x += 1
18    except IOError:
19        print("第%d行,%d列文件读取失败!IOError:%s" % (y,x,item))
20        x -= 1
21    if x == line:
22        x = 0
23        y += 1
24    if (x+line*y) == line*line:
25        break
26NewImage.save("final.jpg")

我们先是用os.listdir获取了所有头像的路径保存到pathList里面。接着创建一个大图片,将大图片划分为n个小方格,再往小方格里面塞好友头像。需要注意的是,在塞好友头像前,需要对头像进行缩略变小才能塞进去。最后,生成最终文件。在当前目录下即可找到final.jpg。即为我们的成品。大家就可以拿着它去朋友圈装逼了~

本来想弄一个现成的供大家下载使用,不过想想还是算了。大家直接下载python源码运行即可。

欲获取代码,请关注我们的微信公众号【程序猿声】,在后台回复:txpj。即可下载。

推荐文章:10分钟教你用Python做个打飞机小游戏超详细教程
推荐文章:10分钟教你用python打造贪吃蛇超详细教程

【python】10分钟教你用python下载和拼接微信好友头像图片的更多相关文章

  1. 10分钟教你用Python打造天气机器人+关键字自动回复+定时发送

    01 前言 Hello,各位小伙伴.自上次我们介绍了Python实现天气预报的功能以后,那个小程序还有诸多不完善的地方,今天,我们再次来完善一下我们的小程序.比如我们想给机器人发“天气”等关键字,它就 ...

  2. 10分钟教你用Python打造微信天气预报机器人

    01 前言 最近武汉的天气越来越恶劣了.动不动就下雨,所以,拥有一款好的天气预报工具,对于我们大学生来说,还真是挺重要的了.好了,自己动手,丰衣足食,我们来用Python打造一个天气预报的微信机器人吧 ...

  3. 10分钟教你用Python玩转微信之好友性别比例统计分析

    01 前言+效果展示 想必,微信对于大家来说,是再熟悉不过的了.那么,大家想不想探索一下微信上的各种奥秘呢?今天,我们一起来简单分析一下微信上的好友性别比例吧~废话不多说,开始干活. 结果如下: 02 ...

  4. 10分钟教你用Python玩转微信之抓取好友个性签名制作词云

    01 前言+展示 各位小伙伴我又来啦.今天带大家玩点好玩的东西,用Python抓取我们的微信好友个性签名,然后制作词云.怎样,有趣吧~好了,下面开始干活.我知道你们还是想先看看效果的. 后台登录: 词 ...

  5. 【python】10分钟教你用python如何正确把妹

    前言 今天没妹子约,刚好研究一下.如何用神奇的python打造一个把妹神器吧.看完这个,你们就能走向人生巅峰,迎娶白富美啦. 我知道你们想看看效果 image 当然啦,这只是测试版的效果,真正的版本可 ...

  6. 【python】10分钟教你用python打造贪吃蛇超详细教程

    10分钟教你用python打造贪吃蛇超详细教程 在家闲着没妹子约, 刚好最近又学了一下python,听说pygame挺好玩的.今天就在家研究一下, 弄了个贪吃蛇出来.希望大家喜欢. 先看程序效果: 0 ...

  7. 【python】10分钟教你用python一行代码搞点大新闻

    准备 相信各位对python的语言简洁已经深有领会了.那么,今天就带大家一探究竟.看看一行python代码究竟能干些什么大新闻.赶紧抄起手中的家伙,跟我来试试吧. 首先你得先在命令行进入python. ...

  8. 10分钟教你用Python实现微信自动回复

    01 前言&&效果展示 相信大家都有忙碌的时候,不可能一直守在微信上及时回复消息.但微信又不能像QQ一样设置自动回复.无妨,今天,我们就来用Python实现微信的自动回复功能吧,并且把 ...

  9. 【python】10分钟教你用Python做个打飞机小游戏超详细教程

    更多精彩尽在微信公众号[程序猿声] 我知道你们一定想先看效果如何 00 目录 整体框架 开始之前-精灵类Sprite 子弹类class Bullet 玩家飞机类class Player 敌机类clas ...

随机推荐

  1. SEO网站title应该怎么写

    第一:具有独特性 在你的网站中,也许有成千上万的页面,首页-分类-无数的文章页面,这些都有固定的标题,他们的标题最好不要相同.有的时候也许不是`站长们故意的,但是在使用编辑软件的时候,经常 会出现很多 ...

  2. Spring Cloud Config 1 (分布式配置中心)

    spring cloud config是spring cloud团队创建的一个全新的项目,用来为分布式系统中的基础设施和微服务应用提供集中化的外部配置支持,它分为服务端和客户端两部分. 服务端也被称为 ...

  3. HTTP直接请求webService

    在实际开发中,会遇到各种各样的webService接口,并且对方提供的接口并不规范,一些客户端反而就不好使了,如cxf(客户端与动态调用)等,直接用java提供的api比较繁琐,这时直接用http r ...

  4. bash shell笔记1 脚本基础知识

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://twentyfour.blog.51cto.com/945260/505644 * ...

  5. ZOJ3953 Intervals

    题意 有n个区间,要求删除一些区间使得不存在三个相交的区间.找出删除的最少区间. 分析 是个比较显然的贪心吧. 先按照区间的左起点进行排序,然后从左往右扫,当有三个区间相交的时候,删除那个右端点最远的 ...

  6. 在Sqlserver中使用Try Catch

      创建错误日志表: CREATE TABLE ErrorLog(errNum INT,ErrSev NVARCHAR(1000),ErrState INT,ErrProc NVARCHAR(1000 ...

  7. DBMS ODBC JDBC是什么?

    昨天躺在被窝里面看了几页电子书,今天写下来. 数据库就是存放数据的仓库. DBMS的意思是数据库管理系统,作用就是“管理”数据库的.“管理”这两个字简单说来就是“增删改查”.所以DBMS就是能够对数据 ...

  8. 用TCGA数据库分析癌症和癌旁组织的表达差异

    上周收到一条求助信息:“如何用TCGA数据库分析LINC00152在卵巢癌与正常组织的的表达差异?” 所以以这个题目为记录分析过程如下: 一.下载数据 a)进入网站https://cancergeno ...

  9. 整合Office Web Apps至自己的开发系统

    原文出处:http://www.cnblogs.com/poissonnotes/p/3267190.html 还可参考:https://www.cnblogs.com/majiang/p/36729 ...

  10. sql 存储过程返回多个值

    ALTER PROCEDURE your_sp_name    ASBEGIN    DECLARE @a INT, @b INT, @c INT    SELECT @a= COUNT(1) FRO ...