itchat+pillow实现微信好友头像爬取和拼接
源码下载链接:https://pan.baidu.com/s/1cPZhwy 密码:2t2o
###效果图

使用方法:
下载项目到本地,打开项目主目录,打开命令行,输入:
pip install -r requirements.txt
使用pip命令时出了一个错:You are using pip version 7.0.3, however version 9.0.1 is available.
解决方法:
使用easy_install指令安装:
首先进入到easy_install的目录 例如D:\Python\Scripts
然后通过指令 easy_install.exe pip==9.0.1 安装成功。 之后又提示了一个错误: error: Unable to find vcvarsall.bat
解决方法:
我的python版本是3.6 ,网上多数解决方法是降级到2.X。不过我找到一个包,链接:https://pan.baidu.com/s/1pM6mdYj 密码:s3mk
下载之后按照正常方式安装, 装完就解决了。
等待安装完成,输入:
python wxImage.py
出现如下二维码:

用手机微信右上角的扫一扫,确认登陆即可。在微信的“文件传输助手”会收到你的好友头像拼接图(等待时间取决于你的好友数量)
核心
python:
- itchat(用于爬取头像)
- pillow(用于拼接图片)
##源码详解
首先登陆python版本微信itchat,生成二维码:
itchat.auto_login(enableCmdQR=True)
获取好友列表:
friends = itchat.get_friends(update=True)[0:]
然后使用itchat的get_head_img(userName=none)函数来爬取好友列表的头像,并下载到本地:
num = 0 for i in friends:
img = itchat.get_head_img(userName=i["UserName"])
fileImage = open(user + "/" + str(num) + ".jpg",'wb')
fileImage.write(img)
fileImage.close()
num += 1
计算出每张头像缩小后的尺寸(由于为了拼接之后可以用来作为为微信头像,所以合成的图片大小都是640 * 640的,因为微信头像大小就是640 * 640)
计算每张头像缩小后的边长(默认为正方形):
eachsize = int(math.sqrt(float(640 * 640) / numPic))
计算合成图片每一边分为多少小边:
numline = int(640 / eachsize)
缩小并拼接图片:
x = 0
y = 0 for i in pics:
try:
#打开图片
img = Image.open(user + "/" + i)
except IOError:
print("Error: 没有找到文件或读取文件失败")
else:
#缩小图片
img = img.resize((eachsize, eachsize), Image.ANTIALIAS)
#拼接图片
toImage.paste(img, (x * eachsize, y * eachsize))
x += 1
if x == numline:
x = 0
y += 1
保存图片到本地:
toImage.save(user + ".jpg")
在微信的文件传输助手发合成后的图片给使用者:
itchat.send_image(user + ".jpg", 'filehelper')
###完整代码:
from numpy import *
import itchat
import urllib
import requests
import os import PIL.Image as Image
from os import listdir
import math itchat.auto_login(enableCmdQR=True) friends = itchat.get_friends(update=True)[0:] user = friends[0]["UserName"] print(user) os.mkdir(user) num = 0 for i in friends:
img = itchat.get_head_img(userName=i["UserName"])
fileImage = open(user + "/" + str(num) + ".jpg",'wb')
fileImage.write(img)
fileImage.close()
num += 1 pics = listdir(user) numPic = len(pics) print(numPic) eachsize = int(math.sqrt(float(640 * 640) / numPic)) print(eachsize) numline = int(640 / eachsize) toImage = Image.new('RGBA', (640, 640)) print(numline) x = 0
y = 0 for i in pics:
try:
#打开图片
img = Image.open(user + "/" + i)
except IOError:
print("Error: 没有找到文件或读取文件失败")
else:
#缩小图片
img = img.resize((eachsize, eachsize), Image.ANTIALIAS)
#拼接图片
toImage.paste(img, (x * eachsize, y * eachsize))
x += 1
if x == numline:
x = 0
y += 1 toImage.save(user + ".jpg") itchat.send_image(user + ".jpg", 'filehelper')
itchat+pillow实现微信好友头像爬取和拼接的更多相关文章
- 如何利用python制作微信好友头像照片墙?
这个不难,主要用到itchat和pillow这2个库,其中itchat用于获取微信好友头像照片,pillow用于拼接头像生成一个照片墙,下面我简单介绍一下实现过程,代码量不多,也很好理解,实验环境wi ...
- 【转】Python微信好友头像拼接图
转自:Python微信好友头像拼接图 今天在朋友圈看到有人发了微信好友拼接图,心里满是新奇,看了下评论才知道用Python写的.心里痒痒,立马就安装了下Python. 安装好了之后,看了下大神的代码, ...
- 【python】10分钟教你用python下载和拼接微信好友头像图片
前言 相信微信大家是用得再多也不过了.那么,对于python+微信,又能玩出什么新的花样呢?下面小编就给大家带来一个好玩的东西.用python下载所有的微信好友的头像,然后拼接成一张大图.这样,大家就 ...
- Python之微信-微信好友头像合成
仔细看下图,你的头像就藏在里面哦!!! 有没有犯密集恐惧症?这并不震撼,如果你有 5000 位好友的话,做出来的图看着会更刺激些. 看完了图,你可能想知道这个图咋做出来的,不会是我闲着无聊把把好友头像 ...
- 【Python还能干嘛】爬取微信好友头像完成马赛克拼图(千图成像)~
马赛克拼图 何谓马赛克拼图(千图成像),简单来说就是将若干小图片平凑成为一张大图,如下图路飞一样,如果放大看你会发现里面都是一些海贼王里面的图片. Our Tragets 爬取所有微信好友的头像
- itchat和matplotlib的结合使用爬取微信信息
前几天无意中看到了一片文章,<一件有趣的事:我用 Python 爬了爬自己的微信朋友>,这篇文章写的是使用python中的itchat爬取微信中朋友的信息,其中信息包括,昵称.性别.地理位 ...
- Python爬微信好友头像,性别,所在地区
本文适合新手(有一定基础的小白) 今天没事,用的网页版微信,于是看源码心理作怪,F12打开,研究了一下,结果发现 /斜眼笑/斜眼笑/斜眼笑 再加上,没事干,(大家有好工作求介绍,本人待就业),Pyth ...
- itchat库初探--微信好友全头像的拼接
代码: import itchat import math import PIL.Image as Image import os itchat.auto_login() friends = ...
- python批量下载微信好友头像,微信头像批量下载
#!/usr/bin/python #coding=utf8 # 自行下载微信模块 itchat 小和QQ496631085 import itchat,os itchat.auto_login() ...
随机推荐
- spring boot @ConditionalOnxxx相关注解总结
Spring boot @ConditionalOnxxx相关注解总结 下面来介绍如何使用@Condition public class TestCondition implements Condit ...
- ggplot2 subscript in x-axis labels(ticks, legend)
#==============================# ggplot2: subscript in x-axis labels(ticks) rm(list=ls(all=TRUE))lib ...
- Qt封装QTcpServer参考资料--QTcpServer多线程实现
目的:每个客户端连接的tcpSocket分别分配一个专门的线程来处理. 实现时分别继承QTcpServer和QTcpScoket实现出自己需要的类. 继承QTcpServer为每个客户端连接时分配线程 ...
- Qt中与文件目录相关操作
一.与文件目录操作有关操作. Qt中与文件目录相关的操作在QDir中,需加入#include <QDir>语句. QDir::drives()是列出电脑根目录下的所有目录,返回的是QFil ...
- python 读写二进制文件实例
本程序,首先写入一个矩阵到二进制文件中,然后读取二进制文件恢复到另外一个矩阵中. #coding:utf--8 #https://www.cnblogs.com/cmnz/p/6986979.html ...
- 情商UP:不遵守八小时工作制,你就能富起来??
从工作第一天起,我们就默认了八小时工作制,但从没有想过,这是不是最高效的工作时间. 事实上,八小时工作制并没有科学依据,不过是多年来约定俗成的习惯罢了. 那些坚守八小时工作制的人和敢于打破它的人,都获 ...
- Wireshark 捕获过滤器的语法
转自:http://blog.csdn.net/qq_29277155/article/details/52077239 前言 我们都知道,wireshark可以实现本地抓包,同时Wireshark也 ...
- struts2系列(二):struts2参数传递错误、struts2的输入错误验证
一.struts2参数传递错误 1. 基本数据类型的传递最好使用包装类,原因是struts 2.1之后使用基本数据类型如果参数为空会报错2. 日期参数的传递最好定义一个区域的属性(定义locale), ...
- ISAPI和CGI限制中没有ASP.NET v4.0 ; vS2013检测到在集成的托管管道模式下不适用的 ASP.NET 设置。
统确实自带了ASP.NET v4.0,但是ISAPI中没有这个选项,导致服务器开不起来 解决方法如下: 1.确保安装IIS时确实安装了ASP.NET,如果没有的话,勾上重新装一下,一般出现404.2时 ...
- Salt-ssh批量自动安装被控端salt-mini
Salt-ssh是Saltstack的另外一种管理方式,无需安装minion端,可以运行salt的一切功能,管理和使用方法基本和salt一样.但是,salt-ssh并没有继承原来的ZeroMQ通讯架构 ...