情人节特别篇:10万粉丝头像“千图成像”画个心

Posted 不吃西红柿丶

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了情人节特别篇:10万粉丝头像“千图成像”画个心相关的知识,希望对你有一定的参考价值。

点赞评论收藏 = 三连再看你最帅

目录

🍏 1、效果预览

🍎 2、代码实现

🍑 2.1 获取粉丝列表

🍒 2.2 下载粉丝头像

🍍 2.3 千图成像

🌶 2.4 效果展示

🍍3、问题答疑

🌽 END、每周福利

🍠 抽奖规则:每周 5 程序开奖,双奖池制

🥜 奖品清单

🍅 资料领取


🍅 联系作者 不吃西红柿 

🍅 作者简介:CSDN 博客专家丨全站 Top 8🏆、HDZ 核心组成员、信息技术智库公号号主

🍅 简历模板、PPT 模板、学习资料、技术互助。关注我,都给你

很多人看西红柿的博客,不知道从何学起,为了广大人民群众的根本利益,我写了一个阅读指引,按照这个指引进行学习,多加练习,假以时日,势必能够……算了

学习路径指引定位适宜人群
全网最全丨 Python 快速入门专栏入门级没有语言基础,感兴趣的大学生
全网最黑丨 Python 黑科技专栏黑科技级有一定的基础,学以致用
大数据知识体系丨集锦专栏工作/就业大数据领域从业者,就业升职加薪
信息技术智库社区吹水/互助互联网相关人员,白嫖奖品丨官方活动

经过 1 年时间的爆肝,终于 10 万粉丝了,感谢小伙伴的长期支持。

大恩大德,无以为报,只能肉偿

亦能把粉丝的头像,拼在一起,组合成爱心。 (同样的,可以把女票头像拼起来哟,然后高清打印...)

ps.数量太多无法一一展示,此处为抽查的 312 个粉丝头像。

🍏 1、效果预览

想知道西红柿是怎么做到的吗,接下来,请抓紧方向盘,我要空中转体 1620 啦!

🍎 2、代码实现

大致分为 3 个步骤:

  1. 获取粉丝列表

  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.html60
Python 编程完全自学教程https://item.jd.com/13130464.html99
Python 入门到人工智能实战https://item.jd.com/12648361.html79
Python 量化金融编程从入门到精通https://item.jd.com/13045490.html79
Python 网络编程从入门到精通https://item.jd.com/12659295.html69
人工智能数学基础与 Python 机器学习实战https://item.jd.com/13504186.html79

🍟 Python 理论基础:全网最全丨 Python 快速入门专栏

🍇 Python 练习应用:全网最黑丨 Python 黑科技专栏

🍅 资料领取

类别信息技术智库
🍅 学习资料8大类 丨20G,含编程语言、算法、大数据生态圈、数据仓库、前端等
🍅 交流加群大佬指点迷津,你的问题往往有人遇到过,求资源在群里喊一声
🍅 面试题库由技术群里的小伙伴们共同投稿,热乎的大厂面试真题,持续更新中
🍅 行业资料关注即可领取 PPT 模板、简历模板、行业经典书籍 PDF
👇👇👇 领取资料、技术互助 👇👇👇


以上是关于情人节特别篇:10万粉丝头像“千图成像”画个心的主要内容,如果未能解决你的问题,请参考以下文章

Python 批量爬取猫咪图片实现千图成像

Python 批量爬取猫咪图片实现千图成像

Python 批量爬取猫咪图片实现千图成像

闲鱼里怎么给关注的粉丝发消息

女友问粉丝过万如何庆祝,我发万字长文《保姆级大数据入门篇》感恩粉丝们支持,学姐|学妹|学弟|小白看了就懂

Canvas 烟花合集 -- 将粉丝头像做成烟花在天空绽放✨