【不存在的人】用Python获取生成随机头像,还不侵权

举报
梦想橡皮擦 发表于 2023/01/25 17:46:50 2023/01/25
【摘要】 ⛳️ 实战场景在编写网站账号系统时,有时需要替新注册用户随机生成一个头像,有的站点使用色块拼接,有的网站使用随机汉字,今天我们使用一些随机头像站点,实现该功能。首先给大家罗列两个随机头像站点:https://joeschmoe.io/api/v1/random:动漫头像;https://thispersondoesnotexist.com/:真人头像。尤其时第二个,站点名称就叫做【不存在的...

⛳️ 实战场景

在编写网站账号系统时,有时需要替新注册用户随机生成一个头像,有的站点使用色块拼接,有的网站使用随机汉字,今天我们使用一些随机头像站点,实现该功能。

首先给大家罗列两个随机头像站点:

尤其时第二个,站点名称就叫做【不存在的人】,所以不用担心侵权问题。

使用的模块是 requests,即通过爬虫原理采集一张图片,通过随机命名的方式,保存到本地。

⛳️ 站点 1 实战编码

首先演示的案例是 joeschmoe.io/api/v1/random,示例代码如下所示:

import requests
import time


def get_img():
    res = requests.get('https://joeschmoe.io/api/v1/random')
    filename = int(time.time())
    with open(f'./{filename}.svg', 'w') as f:
        f.write(res.text)


if __name__ == '__main__':
    get_img()

该站点默认提供的图片是 svg 格式,需要将其进行转换,变为 png 或者 jpg 格式,补充如下代码:

import requests
import time
import cairosvg


def get_img():
    res = requests.get('https://joeschmoe.io/api/v1/random')
    filename = int(time.time())
    with open(f'./{filename}.svg', 'w') as f:
        f.write(res.text)
    return f'./{filename}.svg', filename


if __name__ == '__main__':
    svg_path, filename = get_img()
    print(svg_path, filename)
    cairosvg.svg2png(url=svg_path, write_to=f'./{filename}.png')

上述代码如果需要正确运行,提前安装 cairosvg 模块。

pip install cairosvg

如果安装之后运行代码,依旧出现如下错误:

OSError: no library called "cairo-2" was found

上述错误,需要安装 GTK+ for Windows Runtime Environment Installer,下载地址为:https://github.com/tschoonj/GTK-for-Windows-Runtime-Environment-Installer,安装完毕还需要重启你的开发工具,使得环境变量生效。

生成的默认图片有点小,可以使用 scale 放大图片。

cairosvg.svg2png(url=svg_path, write_to=f'./{filename}.png',scale=10)

⛳️ 站点 2 实战编码

第二个站点的实现与上述逻辑完全一致,示例代码如下所示:

import requests
import time


def get_img():
    res = requests.get('https://thispersondoesnotexist.com/image')
    filename = int(time.time())
    file = open(f'./{filename}.png', 'wb')
    file.write(res.content)
    file.close()


if __name__ == '__main__':
    get_img()

实测中站点访问速度有点慢,大家可以多等待一下。

对于 thispersondoesnotexist 站点,有意思的是有人还实现了一个第三方模块,感兴趣的可以去研究一下!

📢📢📢📢📢📢
💗 你正在阅读 【梦想橡皮擦】 的博客
👍 阅读完毕,可以点点小手赞一下
🌻 发现错误,直接评论区中指正吧
📆 橡皮擦的第 728 篇原创博客

【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。