V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
lem123
V2EX  ›  分享创造

扩展《丑丑头像生成器》,支持 api 调用,并且固定返回值

  •  2
     
  •   lem123 · 13 天前 · 1880 次点击

    声明

    本文的头像生成部分参考了项目 txstc55/ugly-avatar

    背景

    在浏览社区论坛时,我注意到许多相似的头像,它们虽然并不美观,但却具有鲜明的特点。通过查阅评论,我发现这些头像都是由一个开源的头像生成工具制作的。

    效果展示

    ![转存失败,建议直接上传图片文件]( https://github.com/mamumu123/picx-images-hosting/raw/master/截屏 2024-05-20-15.44.50.5mnmsiwu1r.webp)

    体验地址

    demo 体验地址

    源码地址

    github 地址

    项目介绍

    做了哪些优化

    • 增设了 API 接口,可以直接返回随机生成的头像;
    • 添加了 'id' 和 'username' 参数,通过固定这两个参数,可以确保返回的头像保持一致;
    • 增加了 'bg_color' 参数,通过这个参数,可以确保头像的背景色是固定的颜色值;
    • 增加了 'w' 和 'h' 参数,通过这个参数,可以指定返回图片的宽度和高度;

    api demo

    随机返回

    https://next-api-share.vercel.app/api/face

    固定背景色

    https://next-api-share.vercel.app/api/face?bg_color=rgb(245,245,220)

    https://next-api-share.vercel.app/api/face?bg_color=red

    固定返回值

    https://next-api-share.vercel.app/api/face?id=666

    https://next-api-share.vercel.app/api/face?username=john

    固定宽度或高度

    https://next-api-share.vercel.app/api/face?w=400&h=400

    16 条回复    2024-05-23 13:25:46 +08:00
    Lexgni
        1
    Lexgni  
       13 天前
    固定背景色很实用
    ldyisbest
        2
    ldyisbest  
       13 天前
    建议限制一下 w 和 h 的最大值,
    busy0769
        3
    busy0769  
       13 天前
    请问如果不安装 node.js 的话,要如何部署哦?小白一枚
    blessingcr
        4
    blessingcr  
       13 天前
    lem123
        5
    lem123  
    OP
       13 天前
    @Lexgni 感谢支持
    @ldyisbest 有什么应用场景吗?
    @busy0769 可以了解一下 vercel ?免费的,而且很简单。
    @blessingcr 从代码角度我并没有主动限制尺寸,感觉是在某一个阶段被非主动处理了。
    luzemin
        6
    luzemin  
       13 天前
    哈哈,“丑丑头像”我个人在 share 的时候给起的名字,你这个“潦草头像”听起来更好一些
    dhb233
        7
    dhb233  
       13 天前
    原来是 SVG ,我还想为什么 w h 可以设置那么大
    lem123
        8
    lem123  
    OP
       13 天前
    @luzemin 参考自之前余华的投稿热搜
    @dhb233 之后可以支持更多的类型,比如 png
    ldyisbest
        9
    ldyisbest  
       13 天前
    之前看到过一个攻击,没限制宽高的话,我传一个非常大的数字用脚本跑,会打满 cpu
    txstc5555
        10
    txstc5555  
       13 天前
    其实直接设置成 2048 * 2048 max 就行了,一般没有什么网站需要那么大的图片
    lem123
        11
    lem123  
    OP
       13 天前
    @ldyisbest 如果图片类型是 png 的话,确实会有这个问题,因为尺寸越大,二进制文件所占的内存就越大;
    但是如果是 svg 的话,刚好避免了这个问题,因为 svg 是文本格式,尺寸仅仅是一个属性字段。
    TigerJie
        12
    TigerJie  
       12 天前
    @blessingcr
    @lem123 #5

    `/etc/ImageMagick-6/policy.xml`
    ldyisbest
        13
    ldyisbest  
       12 天前
    @lem123 那没事了
    bitkuang
        14
    bitkuang  
       12 天前 via Android
    star
    tansir
        15
    tansir  
       11 天前
    不错。good
    lem123
        16
    lem123  
    OP
       11 天前
    @TigerJie 学到了
    @tansir @bitkuang 感谢🙏
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3708 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 10:23 · PVG 18:23 · LAX 03:23 · JFK 06:23
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.