情人节特别篇:10万粉丝头像“千图成像”画个心
Posted 不吃西红柿丶
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了情人节特别篇:10万粉丝头像“千图成像”画个心相关的知识,希望对你有一定的参考价值。
点赞 ➕ 评论 ➕ 收藏 = 三连再看你最帅
目录
🍅 联系作者: 不吃西红柿
🍅 作者简介:CSDN 博客专家丨全站 Top 8🏆、HDZ 核心组成员、信息技术智库公号号主
🍅 简历模板、PPT 模板、学习资料、技术互助。关注我,都给你
很多人看西红柿的博客,不知道从何学起,为了广大人民群众的根本利益,我写了一个阅读指引,按照这个指引进行学习,多加练习,假以时日,势必能够……算了
学习路径指引 | 定位 | 适宜人群 |
---|---|---|
全网最全丨 Python 快速入门专栏 | 入门级 | 没有语言基础,感兴趣的大学生 |
全网最黑丨 Python 黑科技专栏 | 黑科技级 | 有一定的基础,学以致用 |
大数据知识体系丨集锦专栏 | 工作/就业 | 大数据领域从业者,就业升职加薪 |
信息技术智库社区 | 吹水/互助 | 互联网相关人员,白嫖奖品丨官方活动 |
经过 1 年时间的爆肝,终于 10 万粉丝了,感谢小伙伴的长期支持。
大恩大德,无以为报,只能肉偿。
亦能把粉丝的头像,拼在一起,组合成爱心。 (同样的,可以把女票头像拼起来哟,然后高清打印...)
ps.数量太多无法一一展示,此处为抽查的 312 个粉丝头像。
🍏 1、效果预览
想知道西红柿是怎么做到的吗,接下来,请抓紧方向盘,我要空中转体 1620 啦!
🍎 2、代码实现
大致分为 3 个步骤:
-
获取粉丝列表
-
下载粉丝头像
-
千图成像
在 CSDN 中,你可以通过截图的步骤获取粉丝列表。
那么对应代码中,如何提取粉丝头像呢? 当然是通过接口的方式~
🍑 2.1 获取粉丝列表
获取粉丝的接口:url = f"https://blog.csdn.net/community/home-api/v2/get-fans-list?page=1&pageSize=500&id=0&noMore=false&blogUsername=Username"
def get_fans(Username):
headers =
"User-Agent": "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; InfoPath.3)",
"accept": "application/json, text/javascript, */*; q=0.01",
"accept-encoding": "gzip, deflate, br",
"accept-language": "zh-CN,zh;q=0.9",
"content-type": "application/x-www-form-urlencoded; charset=UTF-8",
"cookie": cookie,
follow_list = []
# CSDN 加了id = 的校验码, 只能获取一页
url = f"https://blog.csdn.net/community/home-api/v2/get-fans-list?page=1&pageSize=500&id=0&noMore=false&blogUsername=Username"
data =
"page": 1,
"size": 20,
"id": 0,
"noMore": "false",
"blogUsername": Username
res = requests.get(url, headers=headers, data=data)
fans = json.loads(res.text)['data']['list']
if fans:
follow_list.extend(fans)
ff = []
for i in follow_list:
ff.append([i['username'], i['userAvatar']]) # 获取名字 + 头像
print('获取粉丝数: ' + str(len(ff)) )
print(ff)
return ff
如图所示,拿到了粉丝列表。
🍒 2.2 下载粉丝头像
在上一步中,我拿到了粉丝的头像的链接,接下来,我需要下载头像到本地,以备后续千图成像。
def download_avatar(username, url):
# 下载用户头像
savePath = './userAvatar' # 头像存储目录
res = requests.get(url)
with open('%s/%s.jpg'%(savePath, username),'wb') as f:
f.write(res.content)
不瞎可以看到,头像已经成功下载,文件名就是粉丝 CSDN id。
🍍 2.3 千图成像
其实上面是个简单的爬虫例子,接下来重点来了~
首先,设置心型图案。
# 设置心形矩阵
FRAME = [[0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0],
[0, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 0],
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
[0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0],
[0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0],
[0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0],
[0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0]]
# 定义相关参数
SIZE = 100 # 每张图片的尺寸,越大越清晰
N = 2 # 每个点位上放置1*1张图片
-
SIZE 越大,图片越清晰
-
N 每个点位上放置的图片数量。 当 N=1,每个点位上放置 1*1 张图片
# 计算相关参数
width = np.shape(FRAME)[1] * N * SIZE # 照片墙宽度
height = np.shape(FRAME)[0] * N * SIZE # 照片墙高度
n_img = np.sum(FRAME) * (N ** N) # 照片墙需要的照片数
print(n_img)
dir = './userAvatar/' # 头像存储目录,微x搜:信息技术智库
filenames = random.sample(os.listdir(dir), n_img) # 随机选取n_img张照片
filenames = [dir + f for f in filenames]
# 绘制爱心墙
img_bg = Image.new('RGB', (width, height)) # 设置照片墙背景
i = 0
for y in range(np.shape(FRAME)[0]):
for x in range(np.shape(FRAME)[1]):
if FRAME[y][x] == 1: # 如果需要填充
pos_x = x * N * SIZE # 填充起始X坐标位置
pos_y = y * N * SIZE # 填充起始Y坐标位置
for yy in range(N):
for xx in range(N):
img = Image.open(filenames[i])
img = img.resize((SIZE, SIZE), Image.ANTIALIAS)
img_bg.paste(img, (pos_x + xx * SIZE, pos_y + yy * SIZE))
i += 1
# 保存图片
img_bg.save('love.jpg')
🌶 2.4 效果展示
小伙伴,看到你的头像了吗? 把你放在"心"里哟 ~
3、问题答疑
> 刚学python的小伙伴,可能比较吃力,可以加主页微群,一起交流学习。
🌽 END、每周福利
🍠 抽奖规则:每周 5 程序开奖,双奖池制
粉丝池 + 奖品池。把每周的参与粉丝和奖品,都放在一个池子,一起来抽。
🥜 奖品清单
至少 8 本正版图书(本周加5个CSDN 定制日历和实体书),不定期:CSDN 水杯、背包、日历...
1、参与方式:
-
三连文章:在本文下三连互动,爬虫程序即会采集你的名字进入粉丝池。
-
访问社区:在社区点赞评论或发帖,即可获取积分,《社区积分榜》前 50 人,自动进入粉丝池。 社区地址: https://bbs.csdn.net/forums/ITID
2、中奖通知: 信息技术智库丨 CSDN 社区 、Python 全栈技术群
3、补充说明:中奖粉丝微信提供收货地址和想要的书名,很多人问我该选哪一本,大家可以根据兴趣、参考价值来选,西红柿把官网价也附上了。
包邮送书书单:我之前发过的书,也可以选 | 官网地址 | 官网价 |
---|---|---|
Python 3.x 基础教程 | https://item.jd.com/12542555.html | 60 |
Python 编程完全自学教程 | https://item.jd.com/13130464.html | 99 |
Python 入门到人工智能实战 | https://item.jd.com/12648361.html | 79 |
Python 量化金融编程从入门到精通 | https://item.jd.com/13045490.html | 79 |
Python 网络编程从入门到精通 | https://item.jd.com/12659295.html | 69 |
人工智能数学基础与 Python 机器学习实战 | https://item.jd.com/13504186.html | 79 |
🍟 Python 理论基础:全网最全丨 Python 快速入门专栏
🍇 Python 练习应用:全网最黑丨 Python 黑科技专栏
🍅 资料领取
类别 | 信息技术智库 |
---|---|
🍅 学习资料 | 8大类 丨20G,含编程语言、算法、大数据生态圈、数据仓库、前端等 |
🍅 交流加群 | 大佬指点迷津,你的问题往往有人遇到过,求资源在群里喊一声 |
🍅 面试题库 | 由技术群里的小伙伴们共同投稿,热乎的大厂面试真题,持续更新中 |
🍅 行业资料 | 关注即可领取 PPT 模板、简历模板、行业经典书籍 PDF |
👇👇👇 领取资料、技术互助 👇👇👇 |
以上是关于情人节特别篇:10万粉丝头像“千图成像”画个心的主要内容,如果未能解决你的问题,请参考以下文章