扩展《丑丑头像生成器》,支持 api 调用,并且固定返回值 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
lem123
V2EX    分享创造

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

  •  2
     
  •   lem123 2024-05-21 09:38:13 +08:00 3136 次点击
    这是一个创建于 537 天前的主题,其中的信息可能已经有所发展或是发生改变。

    声明

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

    `/etc/ImageMagick-6/policy.xml`
    ldyisbest
        13
    ldyisbest  
       2024-05-21 19:22:05 +08:00
    @lem123 那没事了
    bitkuang
        14
    bitkuang  
       2024-05-22 03:05:54 +08:00 via Android
    star
    tansir
        15
    tansir  
       2024-05-23 10:52:28 +08:00
    不错。good
    lem123
        16
    lem123  
    OP
       2024-05-23 13:25:46 +08:00
    @TigerJie 学到了
    @tansir @bitkuang 感谢
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1436 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 23ms UTC 16:34 PVG 00:34 LAX 08:34 JFK 11:34
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86