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

250 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第13天,点击查看活动详情

⛳️ 实战场景

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

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

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

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

使用的模块是 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

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

上述错误,需要安装 GTK+ for Windows Runtime Environment Installer,下载地址为:

github.com/tschoonj/GT…,安装完毕还需要重启你的开发工具,使得环境变量生效。

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

生成的默认图片有点小,可以使用 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 站点,有意思的是有人还实现了一个第三方模块,感兴趣的可以去研究一下!

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

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