目录
DiceBear的定位很清晰:给需要用户头像的产品一个轻量、可重复、不依赖图片存储的解决方案。它的核心逻辑是确定性生成——你提供一个种子值,它用内置的伪随机数生成器决定头像的每个细节,发型、眼睛、肤色、背景色等等。同一个种子,不管在哪台设备、哪个时间、用哪种语言的库来跑,出来的头像一模一样。
这意味着什么?用户注册时你不需要让他上传照片,直接拿他的用户ID当种子生成一个头像,以后每次显示都拿同一个ID去生成,头像永远不会变。你不需要存图片文件,不需要CDN,也不需要处理上传审核这些事情。对于新用户默认头像、聊天应用里的参与者标识、论坛社区的用户头像来说,这套逻辑很省事。
它不是单一风格的头像库。官网目前列出了61种风格,由不同的艺术家绘制,有手绘涂鸦、可爱角色、机器人、像素艺术、抽象几何、首字母组合等等。你可以根据产品调性选一个合适的风格,换风格只需要改URL里的一个单词。
官网入口地址
下载地址
DiceBear本身不需要“下载安装”。它有三种使用方式,对应不同的获取途径:
直接调HTTPAPI:什么都不用下,在<img>标签的src里填一个URL就行。比如https://api.dicebear.com/10.x/lorelei/svgseed=Alice。
用包管理器安装库:前端用npm装@dicebear/core和对应的风格包;PHP、Python、Rust、Go、Dart、C#也都有对应的库可以装。适合想在本地生成、不经过外部请求的场景。
命令行工具:npxdicebear可以在脚本里批量生成头像。
开源项目地址在GitHub:https://github.com/dicebear/dicebear
功能介绍
确定性生成是整个工具的基础。种子可以是任意字符串,用户名、邮箱、UUID、数字ID都行。DiceBear内部用这个字符串驱动伪随机数生成器,决定头像的每个可选项。同一个种子配合同一个风格,输出永远一致。这在多端场景下特别有用:Web端、iOS端、Android端拿同一个用户ID去生成,头像不会各显示各的。
风格库目前有61种。按大类分,有角色类(Adventurer、Lorelei、Micah、OpenPeeps、Personas)、像素类(PixelArt)、机器人(Bottts)、抽象类(Identicon、Rings、Shapes)、手绘涂鸦(Croodles、Cutouts)、首字母(Initials)、表情(FunEmoji)等等。每种风格有自己的可调选项,比如角色类可以改发型、发色、眼睛、嘴巴、眼镜、肤色;抽象类可以调颜色和形状参数。风格之间的选择只需要改URL里的一段路径。
可定制选项分两层。一层是所有风格通用的,比如背景色、翻转、缩放、尺寸。另一层是风格专属的,比如Lorelei风格有hair、eyes、mouth这些参数,每个参数接受一个值数组来限定可选范围。通过URL的查询参数或者库的options对象传进去。
多语言库支持做得比较全。官方维护了JavaScript/TypeScript、PHP、Python、Rust、Go、Dart、C#的库,行为一致,同一个种子在不同语言里生成的SVG是字节级相同的。前端框架方面,React、Vue、Svelte、Angular都可以直接用HTTPAPI当图片源,也可以用JS库在本地渲染。
无需代码的编辑器面向非开发者。官网的AvatarMaker点选式操作,选风格、调颜色和配件、下载PNG,不用写一行代码。Figma插件则让设计师可以在设计稿里直接配置头像风格,导出成可用的包。
自托管支持。如果你不想依赖DiceBear的公共API,可以把HTTPAPI部署到自己的服务器上,数据不出你的基础设施。对于有数据合规要求的项目来说,这个选项比较关键。
应用场景
用户注册默认头像:新用户还没上传照片时,拿用户ID当种子生成一个专属头像,取代灰色剪影。不需要存储空间,不需要审核,用户一注册就有“脸”。
聊天与协作工具:聊天列表、光标位置、提及列表里需要快速识别不同的人。用用户ID生成头像,同一个人在每台设备上看起来都一样,识别成本低。
论坛与社区:新用户发第一帖时就有头像,社区氛围更友好。不想让用户自己选头像的产品,可以直接用这套方案统一视觉风格。
游戏与虚拟身份:NPC、机器人、玩家标识都可以用种子批量生成。同一个角色ID每次进游戏看到的是同一张脸。
开发与测试占位图:写UI的时候需要一批不一样的头像做占位,用不同的种子批量生成一批SVG,比手动找图快得多。
使用方法
最快的方式是直接用URL。在HTML里写一个<img>标签,src填DiceBear的API地址,seed参数填你想用的种子字符串:
<img src="https://api.dicebear.com/10.x/lorelei/svgseed=Alice" alt="avatar" />
换风格就把lorelei改成bottts、adventurer、pixel-art等等。加选项就在URL后面继续拼查询参数,比如&backgroundColor=b6e3f4改背景色。
用JavaScript库在本地生成的话,先装包:npminstall@dicebear/core@dicebear/styles,然后:
import { Style, Avatar } from '@dicebear/core';
import lorelei from '@dicebear/styles/lorelei.json' with { type: 'json' };
const style = new Style(lorelei);
const avatar = new Avatar(style, { seed: 'Alice' });
const svg = avatar.toString();
生成的SVG字符串可以直接嵌到页面里,不需要任何网络请求。
不想写代码的话,打开官网的AvatarMaker,点选风格和选项,调好了直接下载PNG。
服务支持与定价
DiceBear的核心库是MIT协议,免费,包括商业项目。公共HTTPAPI也是免费提供的,官方说每天处理数百万请求,走CDN分发。没有付费套餐,没有会员等级,没有功能限制。
需要留意的只有一点:代码是MIT,但每种头像风格的设计版权由各自的艺术家决定,授权协议不全是MIT。比如Croodles风格的设计是CCBY4.0,Adventurer也是CCBY4.0。用在商业项目里之前,建议在官网的授权总览页面确认一下你选的那款风格的具体条款。大部分风格允许商用,但署名要求有差别。
遇到问题可以看官网文档,写得比较细,从快速上手到各语言集成都有覆盖。没有官方客服,但GitHub仓库可以提issue。
| 源码反馈/咨询 (共有 条反馈) |
DiceBear常见问题
DiceBear是一个开源项目,不是某家公司主导的商业产品。它由社区维护,核心代码在GitHub上公开,采用MIT协议。官网没有突出展示某个公司实体,更多是以开源项目的形式运作。
给应用生成用户头像用的。你给它一个字符串当种子,比如用户ID或邮箱,它生成一张对应的头像图片。同一个种子每次生成的结果一样,所以可以拿用户ID直接生成头像,不用存图片,也不用用户上传。
简单的用法是在HTML的img标签里直接填API地址,比如https://api.dicebear.com/10.x/lorelei/svgseed=你的用户ID。也可以装npm包在本地生成SVG,或者用Python、PHP、Go等语言的库。不想写代码就用官网的编辑器点选下载。
免费。核心库是MIT协议,公共API也免费调用,没有会员套餐,没有功能限制。商用也没问题,但要注意具体头像风格的授权和代码的MIT协议不一样,用之前看一眼风格页面的授权说明。
如果直接用公共API,头像生成的请求会经过DiceBear的服务器,但传的只是种子字符串,不涉及敏感数据。如果对数据流向有要求,可以用它的库在本地生成,不发网络请求,或者把HTTPAPI部署到自己的服务器上。
官网有风格画廊,每种风格都有实时预览。根据产品调性来选:社交类可以用角色风格比如Lorelei或Adventurer,开发者工具可以用像素风或机器人风格,极简产品用Identicon或首字母风格。选定后改URL里的风格名就行。
一样。这是它的核心设计。种子决定了伪随机数生成器的初始状态,同一个种子在任何设备、任何时间、用任何语言的库生成,结果都相同。所以拿用户ID当种子,用户头像永远不会变。
官网目前列了61种,涵盖卡通角色、像素艺术、机器人、抽象几何、手绘涂鸦、首字母、表情等多种类型。每种风格有各自的可调选项,比如角色风格可以改发型、眼睛、肤色、配饰。
可以。React、Vue、Svelte、Angular都能用。最省事的方式是直接把API地址当img的src。想在本地渲染就用@dicebear/core包,在组件里生成SVG字符串。Nuxt有SSR的专门文档,注意服务端和客户端生成一致的问题。
默认输出SVG,矢量格式,放大不糊。也支持通过API参数指定PNG、JPEG、WebP格式,或者用库生成SVG后自己转。头像尺寸可以调,适合各种显示场景。
可以。它支持插件式扩展,官方的Figma插件可以让设计师在Figma里画好组件,导出成风格包,开发者再集成进去。社区也有人在做自定义风格。不过自己从头做一套风格需要一定的设计工作量。
Gravatar是根据邮箱哈希去查一张用户上传的图片,用户没上传就没有。DiceBear是根据种子现场生成一张图,不需要用户做任何事,也不需要存储图片。DiceBear更轻量,头像风格统一,但用户不能自己选具体长相。
公共API官方说每天处理数百万请求,走CDN,对于一般项目够用。如果担心依赖外部服务,可以用它的库在本地生成,或者自托管HTTPAPI。核心库成熟度比较高,很多项目在用。
代码是MIT,商用没问题。头像风格的设计版权由各艺术家决定,大部分允许商用,但有些要求署名。用在商业产品里之前,在官网的授权总览页面查一下你选的风格的具体条款,确认是否需要标注来源。
官网文档主要是英文,没有官方的完整中文翻译。不过文档结构清晰,代码示例多,配合浏览器翻译看问题不大。中文社区有一些介绍文章,但权威信息还是以官网为准。
用公共API的话需要联网,因为请求要发到DiceBear的服务器。用本地库的话不需要联网,库在本地跑,种子在本地处理,SVG在本地生成。自托管API的情况下,只在你自己的内网通信。