Python图片制作下如何用QQ好友头像拼接出里昂
发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,Python图片制作下如何用QQ好友头像拼接出里昂,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。在本篇博客中,我们将实现两个功能:将
千家信息网最后更新 2026年11月01日Python图片制作下如何用QQ好友头像拼接出里昂
Python图片制作下如何用QQ好友头像拼接出里昂,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。
在本篇博客中,我们将实现两个功能:
将所有头像合并为大图
将所有头像以某个模板合成大图
同样,先给上所有运行效果图:
代码实现
1、代码所需库
import requests,codecs,re,urllib,os,random,mathfrom PIL import Imageimport numpy as npimport cv2 as cv
2、代码讲解

2.1、将小头像合并为大图
对于这个,就是直接将每个小头像贴在大图上就行了,这个利用Image的paste函数就可以解决。对于贴的顺序就可以直接按照下面图示一个个贴:

所以,直接给出代码:
def simple_split(filepackage,size,littlesize): #简单拼接,参数为图片文件名,每行每列的size,小头像图片的大小 row = size[0] col = size[1] bigimg = Image.new('RGBA',(littlesize*row,littlesize*col)) #结果图 number = 0 for i in range(row): #行 for j in range(col): #列 randpic = random.randint(1,friends_count) img = Image.open(filepackage+str(randpic)+'.png').convert('RGBA') img = img.resize((littlesize,littlesize)) loc = (i*littlesize,j*littlesize,(i+1)*littlesize,(j+1)*littlesize) print(loc,number) number+=1 bigimg.paste(img,loc) bigimg.save(resultSavePath)由于好友不多,所以我们每次就随机选择一个好友头像贴上去,所以如果你的密度大的话最后出现的头像有很多重复的头像。
给大家展示下最后我的图片吧:
2.2、以某个图片为模板拼接图片
由于不清楚有没有能够直接做出来的第三方库,所有我就自己造了个小轮子。
思路:
将模板分为A x B的小图,就将它的位置形容为 pic[i][j] 吧,然后获取每个小图的平均RGB值,将 pic[i][j] 的平均RGB值和好友头像的RGB值做对比,找出最接近的头像,然后将该头像插入在图像的 pic[i][j] 处。
思路还是比较简单吧????
接下来就是实现了:代码很多地方都给出了注释,我就不多讲了,直接给出代码:
import requests,codecs,re,urllib,os,random,mathfrom PIL import Imageimport numpy as npimport cv2 as cvtxtpath = 'C:/Users/11037/Desktop/test/qqfriends.txt' #你从QQ邮箱中粘贴的文件savepath = 'C:/Users/11037/Desktop/touxiang/' #头像存储位置resultSavePath = 'C:/Users/11037/Desktop/result2.png' #结果存储位置modePath = 'C:/Users/11037/Desktop/leno.jpg' #模板存储位置friends_count = 0 #好友数量all_mean_rgbs = [] #存储计算出的所有平均rgb值def meanrbg(img): #计算图片平均rgb rgb = np.array(img) r = int(round(np.mean(rgb[:, :, 0]))) g = int(round(np.mean(rgb[:, :, 1]))) b = int(round(np.mean(rgb[:, :, 2]))) return (r,g,b)def gettouxiang(txtpath):#输入你的txt文件存储位置 file = codecs.open(txtpath,'rb','utf-8') s = file.read() pattern = re.compile(r'\d+@qq.com') all_mail = pattern.findall(s) #正则表达式匹配所有的qq号 all_link = [] #用于存储需要访问的链接 url = 'http://qlogo.store.qq.com/qzone/' for mail in all_mail: qq = mail.replace('@qq.com','') l = url + qq +'/'+qq+'/100' all_link.append(l) i = 1 for link in all_link: #遍历链接,下载头像 saveurl = savepath+str(i)+'.png' savaImg(link,saveurl) i +=1 print('已下载',i) friends_count = len(all_link) #获取朋友头像数量 return Truedef savaImg(picurl,saveurl): #存储图片函数,picurl是图片的URL,saveurl是本地存储位置 try: bytes = urllib.request.urlopen(picurl) file = open(saveurl,'wb') file.write(bytes.read()) file.flush() file.close() return True except: print('worry') savaImg(picurl,saveurl)def simple_split(filepackage,size,littlesize): #简单拼接,参数为图片文件名,每行每列的size,小头像图片的大小 row = size[0] col = size[1] bigimg = Image.new('RGBA',(littlesize*row,littlesize*col)) number = 0 for i in range(row): for j in range(col): randpic = random.randint(1,friends_count) img = Image.open(filepackage+str(randpic)+'.png').convert('RGBA') img = img.resize((littlesize,littlesize)) loc = (i*littlesize,j*littlesize,(i+1)*littlesize,(j+1)*littlesize) print(loc,number) number+=1 bigimg.paste(img,loc) bigimg.save(resultSavePath)def mode_split(filepackage,modepath,bigsize,littlesize): #以模板存储头像 row = bigsize[0] #大图每行多少个小头像 col = bigsize[1] #每列 suitSize = (littlesize*row,littlesize*col) #大图最终的像素size bigImg = Image.open(modepath) bigImg = bigImg.resize(suitSize) resultImg = Image.new('RGBA',suitSize) for i in range(row): for j in range(col): cutbox = (i*littlesize,j*littlesize,(i+1)*littlesize,(j+1)*littlesize) #模板剪切用于对比的某个区域 cutImg = bigImg.crop(cutbox) #复制到cutImg中 tmprgb = meanrbg(cutImg) suitOne = mostSuitImg(tmprgb) + 1 #对比出最合适的头像 img = Image.open(filepackage + str(suitOne) + '.png').convert('RGBA') img = img.resize((littlesize,littlesize)) resultImg.paste(img,cutbox) print('已粘贴',cutbox) resultImg.save(resultSavePath) #存储def mostSuitImg(tmprgb): #进行对比,找出最合适的头像 global all_mean_rgbs minRange = 200000 id = 0 for rgb in all_mean_rgbs: tmp = (rgb[1][0]-tmprgb[2])**2+(rgb[1][1]-tmprgb[1])**2+(rgb[1][2]-tmprgb[1])**2 if tmp关于Python图片制作下如何用QQ好友头像拼接出里昂问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注行业资讯频道了解更多相关知识。
头像
图片
代码
模板
存储
好友
位置
大图
小头
函数
实战
文件
里昂
制作
功能
问题
合适
参数
地方
大小
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
保险科技 互联网保险
互联网科技网
鸠鸠互联网科技
金融科技创新监管互联网金融
高科技与互联网
贷财互联网科技
恒银科技与互联网金融
顶级互联网科技成果有哪些
河南猎农互联网科技有限公司
荆州市昕露互联网络科技有限公司
崇明区互联网教育科技售后服务
中国互联网公司排名锤子科技
伊宁互联网科技做什么的
互联网科技新闻
唐山双旺合互联网科技产业园
广西泛欧互联网科技有限公司
互联网科技博主张洲
科技互联网专业工作会议发言稿
承德科技产业互联网平台
互联网科技创业有什么好项目
互联网科技公司经营范围
疫情对互联网科技公司影响
金融科技还是互联网
互联网科技视频
中化能源互联网科技招聘
互联网经济与金融科技
青海科技产业互联网发展
广东工业互联网大赛深圳学泰科技
恒生互联网科技趋势
互联网大会出现的黑科技