表白Python,用python给女朋友表白
实现python的骚操作,表达你的神奇技能:整个朋友圈都爱你_wx60d14358a4f7b的技术博客_博客
你还在为得不到女孩而烦恼吗?
你不够帅吗?
还是不够幽默?
不,是因为你没注意我!
关注一波骚操作。学会泡妞后,姐姐们都在火车站。
今天我想和大家分享的是用微信好友的头像来教你如何拼出想要的单词的第一手操作。
我给这个项目起了个好听的名字叫“整个朋友圈看起来都很爱你!”
不bb,先看看效果图吧。
当然,我们的效果图不会像下面这样。
当然,值得一提的是,这里提供了思路和代码,还有很大的发展空间,让这个项目更有吸引力。
翻译
bb句上有什么?
上面三个大字“我爱你”是用我500个朋友的头像拼接而成的。不血腥吗?
不是,是我朋友圈所有朋友的头像,拼接在一起的。那不就是“整个朋友圈都爱你!”
这13包我给你满分,多一分不行。
好了,客套话说完了,接下来是展示真功夫的时候了。
直接项目:https://github.com/pengfexue2/pic2char
简单介绍一下项目的主要内容:
代码描述:wx2char.py用于扫码登录微信,获取微信好友头像并存储在本地,将头像拼接成inpt= 2019新年快乐!中的文本内容。1.你需要先安装PIL和itchat库。2.运行代码时需要扫码登录微信网页版。3.目前点阵库是通过汉字库实现的,即文件夹中的HZK16文件,输入文本时需要汉字和标点符号,否则可能会导致出错。4.如果出现“好友头像读取失败,已被自己的头像替换”的字样,这是正常的,因为有些微信好友头像由于格式问题无法获取。
2 pic2char.py是假设你想用其他图片组成文字图片,不需要获取微信头像,直接输入汉字拼接显示即可。1.你需要PIL图书馆。2.你需要HZK16文件来获取汉字的点阵信息。3.在运行代码之前,要把图片文件夹放到代码文件夹中,把代码中的user=TED 改成文件夹名,准备一张备用图片,把路径分配给self,作为读取图片失败时的备用。
说明:拿到代码后,保存后在wx2char.py中选择修改要输出的文本内容,直接运行即可,二维码图片会弹出。可以扫码登录微信网页版,生成微信好友头像的文件夹(例如TED文件夹)、我的微信头像(TED.jpg)、最终结果图片的文件夹(TED_output)。
因为好友太多会花很长时间看微信头像,pic2char.py准备打图片转换成汉字的功能。事先准备好图片文件夹和备用图片,在代码中做相应修改后即可运行。
抓住草。能这么BB吗?
空谈不值钱。给我看看代码
那我们直接开始实战的讲解吧。
(1)wx2char.py用于扫码登录微信,获取微信好友头像并存储在本地,将头像图片拼接成inpt=爱你!中的文本内容。
导入binascii
导入操作系统
从PIL进口图片
导入itchat
def char2bit(textStr):
KEYS=[0x80、0x40、0x20、0x10、0x08、0x04、0x02、0x01]
target=[]
全局计数
计数=0
对于范围内的x(len(textStr)):
text=textStr[x]
rect_list=[] * 16
对于范围(16)中的I:
rect_list.append([] * 16)
gb2312=text.encode(gb2312 )
hex _ str=binas CII . b2a _ hex(GB 2312)
result=str(十六进制字符串,编码=utf-8 )
area=eval(0x 结果[:2]) -0xA0
index=eval(0x 结果[2:]) -0xA0
偏移量=(94 *(区域-1)(索引-1)) * 32
font_rect=无
以开( HZK16 , rb )为f:
f .查找(偏移)
font_rect=f.read(32)
对于范围内的k(len(font _ rect)//2):
row_list=rect_list[k]
对于范围(2)中的j:
对于范围(8)中的I:
asc=font_rect[k * 2 j]
flag=asc键[i]
row_list.append(标志)
输出=[]
对于rect_list中的行:
对于第I行:
如果我:
output . append(“1”)
计数=1
#print(0 ,end= )
否则:
output . append(“0”)
#打印(.,end=“”)
#打印()
target.append()。join(输出))
返回目标
def getHeadImgs():
#通过二维码登录微信网页版
itchat.auto_login()
#获取微信好友信息列表
friendList=it chat . get _ friends(update=True)
#这里要用到的微信好友信息如下:user={ username : @ 8238 e 922 e8be 7356 b 1750 c 306 CB 75768 , pyquanpin: ted ,昵称: ted}
#获取用户的个人昵称,用于以后的文件夹命名和用户头像命名。
if friendList[0][PYQuanPin]:
user=friendList[0][ PYQuanPin ]
否则:
user=friendList[0][昵称]
#先读取用户头像,存为用户名。
selfHead={}/{}。jpg。格式(os.getcwd(),用户)
用open(selfHead, wb )作为f:
head=it chat . get _ head _ img(friendList[0][ UserName ])
f.write(头)
#创建一个文件夹来存储您朋友的头像
如果不是os.path.exists(用户):
os.mkdir(用户)
#工作路径指向新文件夹。
os.chdir(用户)
#获取新文件夹路径
userspace=os.getcwd()
#开始阅读朋友的头像,并写在新文件夹中。
打印(开始阅读%d个朋友的头像.%(len(friendList)-1))
对于范围内的I(1,len(friendList)):
如果i % 100==0:
打印( %d个朋友头像已阅读,请耐心~%i)
尝试:
friendList[I][ head _ img ]=it chat . get _ head _ img(userName=friendList[I][ userName ])
friendList[I][ head _ img _ name ]= % s . jpg % friendList[I][ UserName ]
除了连接错误:
print(无法获取%s % friendList[i][UserName])
with open(friendList[I][ head _ img _ name ], wb) as f:
f . write(friendList[I][ head _ img ])
打印(‘看完了你朋友的头像!)
#返回保存头像的文件夹路径和用户自己头像的路径。
返回用户,selfHead
def head2char(工作区、用户、自身、大纲):
文件夹={}\\{} 。格式(工作区,用户)
#将工作路径转移到头像文件夹
os.chdir(文件夹)
#获取文件夹中的头像列表
imgList=os.listdir(文件夹)
#获取头像图片的数量
numImages=len(imgList)
#设定切割后头部的尺寸。
每个尺寸=100
#变量n用于循环遍历头像图片,即当所需图片大于头像总数时,回收头像图片。
n=0
#变量count用于对最终的word图片进行编号。
计数=0
#img=Image.open(self)
#初始化背景着色的颜色列表:FFFACD黄色# F0FFF白色# BFEFF蓝色#b7facd青色#ffe7cc浅橙色#fbccff浅紫色#d1ffb8浅绿色#febec0浅红色#E0EEE0灰色
colorlist=[#FFFACD , #F0FFFF , #BFEFFF , #b7facd , #ffe7cc , #fbccff , #d1ffb8 , #febec0 , #E0EEE0]
#index用于改变不同单词的背景颜色。
指数=0
#每一项对应不同单词的点阵信息
对于大纲列表中的项目:
#将工作路径改为头像所在的文件夹。
os.chdir(文件夹)
#新建一个画布,背景色,16*16点阵,每个点填充2*2头像,所以它的长度是16*2*100。
#如果您想要白色背景,请将颜色列表[索引]更改为 #FFFFFF
Canvas=image.new (RGB ,(3200,3200),colorlist [index]) #创建一个新的画布
#index transform,用于变换背景色
索引=(索引1)%9
计数=1
# 16 * 16点阵中的每个点填充四个100*100的头像。
对于范围内的I(16 * 16):
#点阵信息为1,表示此处要显示的头像是用来组词的。
if item[i]==1 :
#循环阅读四张连续的头像图片
x1=n % len(imgList)
x2=(n ^ 1)% len(img list)
x3=(n ^ 2)% len(img list)
x4=(n ^ 3)% len(img list)
#以下四组尝试,将读出的四个头像填充到画板上相应的点位置。
点阵左上角图片的1/4
尝试:
Img=Image.open(imgList[x1]) #打开图片
除了IOError:
Print(某朋友头像未能读取,已用其头像代替)#有些人不设置头像,会有例外。
img=Image.open(self)
最后:
Img=img.resize((每个尺寸,每个尺寸),image.antialias) #缩小图片
Canvas.paste (IMG,((I% 16) * 2 *各尺寸,(I//16) * 2 *各尺寸))#拼接图片
#点阵右上角的图片2/4
尝试:
Img=Image.open(imgList[x2]) #打开图片
除了IOError:
Print(某朋友头像未能读取,已用其头像代替)#有些人不设置头像,会有例外。
img=Image.open(self)
最后:
Img=img.resize((每个尺寸,每个尺寸),image.antialias) #缩小图片
Canvas.paste (img,((I% 16) * 21) *各尺寸,(I//16) * 2 *各尺寸))#拼接图片
# 3/4的图片在左下角的点阵上
尝试:
Img=Image.open(imgList[x3]) #打开图片
除了IOError:
Print(某朋友头像未能读取,已用其头像代替)#有些人不设置头像,会有例外。
img=Image.open(self)
最后:
Img=img.resize((每个尺寸,每个尺寸),image.antialias) #缩小图片
Canvas.paste (img,((I% 16) * 2 *各尺寸,((I//16) * 21) *各尺寸))#拼接图片
#图片在右下角的点阵4/4处
尝试:
Img=Image.open(imgList[x4]) #打开图片
除了IOError:
Print(某朋友头像未能读取,已用其头像代替)#有些人不设置头像,会有例外。
img=Image.open(self)
最后:
Img=img.resize((每个尺寸,每个尺寸),image.antialias) #缩小图片
Canvas.paste (img,((I% 16) * 21) *各尺寸,((I//16) * 21) *各尺寸))#拼接图片
#调整n读取后续图片
n=(n ^ 4)% len(img list)
os.chdir(工作区)
#创建一个文件夹来存储输出结果
如果不是OS . path . exists({ } _ output)。格式(用户)):
os.mkdir({}_output )。格式(用户))
os.chdir({}_output )。格式(用户))
#质量代表图像质量,1-100
canvas.save(结果%d.jpg% count,quality=100)
if __name__==__main__ :
#将您要转换的单词赋给字符串
Inpt=生日快乐,万事如意!
#将文字转换成汉字库的点阵数据
outlist=char2bit(inpt)
#获取当前文件夹路径
workspace=os.getcwd()
#获取用户自己的名字和用户的头像路径。
user,self=getHeadImgs()
#用点阵将头像图片拼接成单字图片。
head2char(工作区、用户、自己、大纲)
打印(“干得好!”)注意修改:主函数中inpt的汉字内容,注意window和linux的路径中“\”和“/”的区别。否则会得到一个错误(pic2char.py也是一样)。
(2)pic2char.py是假设你想用其他图片组成文字图片,不需要获取微信头像,直接输入汉字,用图片显示即可。
使用
我这里用的是python3.6。
在运行代码之前,您需要安装PIL和itchat库。
(1)没有朋友肖像库的情况:
wx2char.py运行后,扫描二维码,即可登录阅读好友,稍等片刻即可输出结果。
(2)下载好友头像库的情况:
修改pic2char.py的路径,然后运行pic2char.py。
来自
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。