Code Monkey home page Code Monkey logo

wximage's Introduction

itchat+pillow实现微信好友头像爬取和拼接


本项目github地址


###效果图

demo2

demo3

demo4


使用方法(前提是设备安装了python):

下载本项目到本地,打开项目主目录,打开命令行,输入:

pip install -r requirements.txt

等待安装完成,输入:

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')

###完整代码(下载本人github项目会更好点):

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')




wximage's People

Contributors

gzm1997 avatar xiaoxiaoyao avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

wximage's Issues

KeyError:'skey'

请问这个问题怎么解决:
扫描二维码后报错:self.loginInfo['skey'] KeyError:'skey'

mac python3 下载不了对应的版本库

Collecting alabaster==0.7.9 (from -r requirements.txt (line 1))
Downloading alabaster-0.7.9-py2.py3-none-any.whl
Collecting anaconda-client==1.6.0 (from -r requirements.txt (line 2))
Could not find a version that satisfies the requirement anaconda-client==1.6.0 (from -r requirements.txt (line 2)) (from versions: 1.1.1, 1.2.2)
No matching distribution found for anaconda-client==1.6.0 (from -r requirements.txt (line 2))
Henry-MBP:wxImage-master henry$ python wxImage.py
File "wxImage.py", line 49
SyntaxError: Non-ASCII character '\xe6' in file wxImage.py on line 49, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details
Henry-MBP:wxImage-master henry$ pip install -r requirements.txt
Collecting alabaster==0.7.9 (from -r requirements.txt (line 1))
Using cached alabaster-0.7.9-py2.py3-none-any.whl
Collecting anaconda-client==1.2.2 (from -r requirements.txt (line 2))
Downloading anaconda-client-1.2.2.tar.gz (64kB)
100% |████████████████████████████████| 71kB 101kB/s
Collecting anaconda-navigator==1.4.3 (from -r requirements.txt (line 3))
Could not find a version that satisfies the requirement anaconda-navigator==1.4.3 (from -r requirements.txt (line 3)) (from versions: )
No matching distribution found for anaconda-navigator==1.4.3 (from -r requirements.txt (line 3))

KeyError: 'RGBA'报错

OSError: cannot write mode RGBA as JPEG
这个错误是由于什么原因造成的,该如何解决?

pip install -r requirements.txt报错

Collecting pywin32==220 (from -r requirements.txt (line 27))
Could not find a version that satisfies the requirement pywin32==220 (from -r requirements.txt (line 27)) (from versions: )
No matching distribution found for pywin32==220 (from -r requirements.txt (line 27))

在windows和fedora上都是报相同的错误。
另外,pip install -r requirements.txt这一步是安装依赖?安装包?我不会py,请教一下,下载巨慢,挂了VPN还好点,换了清华的镜像之后就一直报上面的错误

导出类库报错,

本人小白,按着步骤来,在导出类库的时候提示:

AttributeError: module 'importlib._bootstrap' has no attribute 'SourceFileLoader

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.