DiceBear Bottts 头像风格实战指南:用模块化机器人头像定制你的占位图
UI组件后端【免费下载链接】dicebearDiceBear is an avatar library for designers and developers. 项目地址https://gitcode.com/gh_mirrors/di/dicebear点击查看免费下载Bottts 是 DiceBear 提供的一款免费机器人头像风格它把头像拆解为可交换的面部、嘴巴、天线、侧部单元与表面纹理通过一个seed即可生成形态各异的机器人。本文围绕 Bottts 风格文档 展开讲解如何通过 DiceBear 的 HTTP API 与 JavaScript 库快速生成 Bottts 头像并结合仓库内的预设数据与源码实现深入说明其核心选项、定制方法与渲染原理。Bottts 风格是什么Bottts 的全称描述是 Robot heads assembled from swappable faces, mouths, antennas, side units and textures即机器人头像由可交换的部件组装而成。它与传统人物肖像风格不同所有部件都围绕机器人主题设计并且共用一套外壳颜色。从仓库中的预设数据文件和编辑器选项定义可以看出Bottts 的可定制部件包括眼睛eyes提供bulging、dizzy、glow、happy、robocop、round、roundFrame01、roundFrame02、sensor等变体嘴巴mouth提供bite、grill01、grill02、grill03、smile01、smile02、square01、square02等变体头顶部件top提供bulb01、glowingBulb01、glowingBulb02、horns、lights、pyramid、radar等天线与装饰变体。编辑器在德语界面中专门把 bottts 的top翻译为 Kopfaufsatz头顶饰件以避免与头部混淆见 OptionsTabs.vue 注释 与 de.json侧部单元sides提供antenna02、cables01、cables02、round、square、squareAssymetric等变体表面纹理texture通过textureProbability控制纹理叠加层的出现概率其变体键为textureVariant编辑器德语标签为 Textur。Bottts 的整套外壳shell使用单一颜色组baseColor。预设描述中明确写道 Bottts has one color group for the whole shell因此更换一个调色板就能改变整台机器人的主色。通过 HTTP API 快速生成 Bottts 头像Bottts 是 DiceBear 官方 HTTP API 支持的风格之一。HTTP API 的调用方式在集成文档中有完整说明核心 URL 模板为https://api.dicebear.com/11.x/styleName/svg将styleName替换为bottts即可https://api.dicebear.com/11.x/bottts/svg要生成同一个用户每次访问都看到同一个机器人的稳定头像传入一个稳定的seed例如用户 IDhttps://api.dicebear.com/11.x/bottts/svg?seeduser-8f3a2c同一个 seed 永远返回同一张图片这正是把 Bottts 用作未上传头像用户的默认占位图的关键。若 seed 含空格等特殊字符需先做 URL 编码。HTTP API 支持多种输出格式。在集成文档中Bottts 被选作演示五种格式的例子https://api.dicebear.com/11.x/bottts/svg https://api.dicebear.com/11.x/bottts/png https://api.dicebear.com/11.x/bottts/jpg https://api.dicebear.com/11.x/bottts/webp https://api.dicebear.com/11.x/bottts/avif其中 SVG 可无限缩放、没有尺寸上限PNG、JPG、WebP、AVIF 最大 256×256 像素且有更低的速率限制。API 还提供definition.json与options.json两个元数据端点返回 bottts 的定义 JSON 与每个可选项的类型、枚举值和取值范围适合用来构建头像编辑器之类的工具。在 JavaScript 库中使用 Bottts如果不想依赖远程 API可以在浏览器或 Node.js22中本地渲染。需要安装核心库与样式定义包npm install dicebear/core dicebear/styles基础用法参见 JavaScript 库文档import { Style, Avatar } from dicebear/core; import bottts from dicebear/styles/bottts.json with { type: json }; const style new Style(bottts); const avatar new Avatar(style, { seed: robot-42, // ... other options }); const svg avatar.toString();生成固定尺寸、圆形的机器人头像const avatar new Avatar(style, { seed: robot-42, size: 128, borderRadius: 50, // circular avatar });配合变换类核心选项翻转、旋转、缩放、平移时可直接像下面这样传入以avataaars为例的写法对 bottts 同样适用const avatar new Avatar(style, { seed: Jane, flip: horizontal, rotate: 10, scale: 0.9, translateY: 5, });多个头像同时内联到同一页面时可开启idRandomization为每个 SVG 的内部 ID 加随机后缀避免url(#…)冲突但注意它会破坏输出的确定性快照测试或 SSR 场景应关闭。Bottts 的核心定制选项通用核心选项Bottts 继承 DiceBear 所有风格共享的核心选项完整定义见核心选项文档。与本风格最相关的几个选项类型默认值说明seedstring确定性生成的种子flipnone \| horizontal \| vertical \| bothnone翻转头像rotatenumber \| [min, max]0旋转角度−360 到 360scalenumber \| [min, max]1围绕画布中心的统一缩放0 到 10borderRadiusnumber \| [min, max]0圆角0 到 5050 为圆形sizeintegerunset输出像素尺寸1 到 4096translateX/translateYnumber \| [min, max]0平移画布宽/高的百分比tagsstring \| string[]unset按标签过滤变体!前缀表示排除背景选项背景选项对所有风格都可用即使风格定义本身没有background颜色组选项类型默认值说明backgroundColorstring \| string[]unset背景色十六进制#可省略backgroundColorFillsolid \| linear \| radialsolid背景填充方式可传数组随机backgroundColorFillStopsinteger \| [min, max]2渐变停靠点数最小 2backgroundColorAnglenumber \| [min, max]0渐变角度−360 到 360backgroundColorOrderrandom \| fixedrandom固定顺序使用颜色组件与颜色动态选项对 bottts 中的每个组件eyes、mouth、top、sides、texture可以用{component}Variant限定变体可传单个字符串、字符串数组或带权重的对象{ variant: weight }用{component}Probability控制出现概率0 到 100。例如只想要呆萌灯泡眼和方嘴的机器人const avatar new Avatar(style, { seed: dizzy-bot, eyesVariant: [dizzy, glow], mouthVariant: square01, });对颜色组baseColor与background可用{color}Color覆盖调色板并用{color}ColorFill、{color}ColorAngle、{color}ColorFillStops、{color}ColorOrder控制填充细节。传入{color}ColorOrder: fixed时颜色严格保持给定顺序渐变按首到尾作为停靠点实心填充始终用第一个颜色。一个值得注意的风格特性多个预设的说明都提到Bottts 中有部分眼睛、一个嘴巴和若干天线把颜色直接画进美术素材里而不是暴露为颜色组因此这些变体不受baseColor换色影响强行改色时这些变体会从可选池中消失。例如 sepia 预设说明指出Five eye sets, one mouth and three antennas carry a color painted into the artwork rather than exposed as a group, so those variants drop out。为这类机器人做品牌换色时需要注意这一约束。用官方预设快速落地仓库为 Bottts 维护了 12 套官方预设完整数据见 bottts.json对应预设页面。预设本质上就是一组普通的渲染选项选中一套后可以读取它的选项代码也可以直接在 DiceBear Playground 中打开继续微调。预设未覆盖的选项仍随 seed 变化因此每套预设对应多少种不同的机器人取决于它锁定了多少自由度。ID名称摘要核心选项bareBare无背景、无表面纹理backgroundColor: []textureProbability: 0sepiaSepia黄铜机器人在仿古纸上米色背景 4 个黄铜外壳色并锁定 eyes/mouth/top/sides 变体池greyscaleGreyscale四级灰阶的裸金属浅灰背景 4 个钢灰色同样锁定变体池duotoneDuotone单一靛蓝外壳backgroundColor: [dfe3f5]baseColor: [3d4272]mutedMuted大地色系外壳6 个大地色替换默认 22 个饱和色electricElectric近黑背景上的荧光色6 个超出风格自带色域的荧光色pastel-wallPastel Wall五款柔和背景外壳不动5 个柔和背景色bold-popBold Pop饱和背景 饱和外壳5 个高饱和背景色night-shiftNight Shift暗色界面专用近黑背景 风格色域偏亮端的外壳色sunriseSunrise暖色渐变背景2 色 backgroundColorFill: linearbackgroundColorAngle: 135full-castFull Cast每个机器人都带纹理textureProbability: 100默认约 50%close-upClose Up放大脸部适合小尺寸头像scale: 1.2其中sepia、greyscale、duotone、muted四套预设共同使用了同一组变体池9 种眼睛、8 种嘴巴、7 种头顶部件、6 种侧部单元下面以sepia为例给出完整可复制的选项对象{ backgroundColor: [dfc9a3], baseColor: [8a6a3f, a3814f, 6f5433, b59463], eyesVariant: [ bulging, dizzy, glow, happy, robocop, round, roundFrame01, roundFrame02, sensor ], mouthVariant: [ bite, grill01, grill02, grill03, smile01, smile02, square01, square02 ], topVariant: [ bulb01, glowingBulb01, glowingBulb02, horns, lights, pyramid, radar ], sidesVariant: [ antenna02, cables01, cables02, round, square, squareAssymetric ] }在 HTTP API 中把预设选项以查询参数形式拼接即可数组用逗号分隔https://api.dicebear.com/11.x/bottts/svg?seedbrass-01backgroundColordfc9a3baseColor8a6a3f,a3814f,6f5433,b59463textureProbability0源码视角Bottts 是如何被解析与渲染的风格页与预设的自动接线Bottts 风格页本体是一段极简的 Vue 组件调用见 bottts/index.md实际渲染交由SiteStylePage组件完成。仓库中的 sync-preset-pages.ts 会自动把预设数据接入每个风格页对有SiteStylePage的风格页预设区由该组件自行渲染对其他风格页则在## Options之前插入## Presets与StylePresets组件。这意味着你在文档站点上看到的 Bottts 预设画廊其数据源就是 bottts.json。选项归一化与变体权重在dicebear/core的 JavaScript 实现中用户传入的选项先由 Options.ts 归一化标量被统一转为数组、[min, max]被转为内部Range结构随后由 Resolver.ts 结合风格定义与 PRNG 完成最终取值。变体选择的核心逻辑在Resolver.#variantWeightsResolver.ts当用户显式设置了{component}Variant时它完全接管该组件的变体池列表中的每个变体权重为 1权重对象则按给定权重加权此时tags过滤被忽略只有未显式设置变体时tags过滤才生效两者都未设置则使用风格定义的全部变体。组件显隐则由{component}Probability决定未设置时回落到定义中的默认概率见#probability与#isVisible。这也解释了为什么textureProbability: 0能直接关闭纹理层。预览种子与一致性每个风格页顶部的预览行由 generate-preview-seeds.ts 生成它为每个风格挑选 8 个 seed使预览行的首字母拼出 DICEBEAR并按图形差异 调色板差异 相邻同色惩罚的评分做确定性束搜索。脚本注释特别提到行内能给 bottts 分配 8 个不同的机器人且其中 4 个仍是同一金色——这从侧面印证了 Bottts 的多样性主要由部件形态而非颜色驱动。在 CLI 集成文档的对比输出示例中bottts一行显示0/20 0/53 identical说明参与对比的 53 个变体在两侧版本中渲染结果完全一致——这也是 Bottts 变体规模的一个可验证参考20 个 seed、53 个变体均无差异。相关风格Bottts Neutral如果只需要机器人眼睛和嘴巴而不需要头部、天线与侧部单元官方还提供了精简版Bottts Neutral见 bottts-neutral 文档机器人的脸直接落在彩色方块上没有任何头壳部件。它的预设数据在 bottts-neutral.json同样包含bare、sepia、greyscale、duotone、muted、electric、pastel-wall、bold-pop、sunrise、full-cast、close-up等预设其中close-up的缩放值为1.25。在头像尺寸极小的评论区场景Neutral 版往往比完整版更可读。许可与使用提醒DiceBear 的各类风格来自不同创作者每位创作者为自己的风格选择许可证完整清单见许可概览。HTTP API 免费用于非商业用途SVG 限 50 次请求/秒、位图格式限 10 次/秒超限返回429需要商业使用或更高配额时可参考自托管 HTTP API 指南部署自己的实例。此外公开 HTTP API 不支持idRandomization、fontFamily、fontWeight与title选项这些能力需要自托管才能启用。小结Bottts 用一套简洁的部件组装模型覆盖了从呆萌到硬核的广阔视觉范围眼睛、嘴巴、头顶部件、侧部单元与纹理层各自独立可控单一baseColor颜色组让整体换色异常简单。无论你是通过一行 HTTP URL、几行 JavaScript 代码还是直接复用仓库中的 12 套官方预设都能在几分钟内得到一批风格统一、形态各异的机器人头像。想进一步动手可以打开 Playground 调出任意预设读取它的选项 JSON 再继续调整。赞分享UI组件后端【免费下载链接】dicebearDiceBear is an avatar library for designers and developers. 项目地址https://gitcode.com/gh_mirrors/di/dicebear点击查看免费下载相关推荐DiceBear Bottts Neutral 头像风格实战指南纯色方块上的机器人脸生成与个性化DiceBear Bottts Neutral 头像风格实战指南纯色方块上的机器人脸生成与个性化 Bottts Neutral 是 DiceBear 中一支极UI组件后端Cutouts 头像风格完全指南用 DiceBear 生成撕纸拼贴风人物头像Cutouts 头像风格完全指南用 DiceBear 生成撕纸拼贴风人物头像 Cutouts 是 DiceBear 头像库中一款「撕纸拼贴」风格的免费头像生成UI组件后端OpenClaw Z.AIGLMProvider 实战指南端点自动探测、模型目录与思考层级配置OpenClaw Z.AIGLMProvider 实战指南端点自动探测、模型目录与思考层级配置 本文基于 OpenClaw 仓库中 docs/providUI组件后端上一篇快速实现Layui表格行拖拽排序5步完整操作指南下一篇Science Parse核心功能详解3分钟掌握PDF论文的标题、作者与摘要提取创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

Omura靶机渗透测试:从XSLT注入到iSCSI提权

Omura靶机渗透测试:从XSLT注入到iSCSI提权

1. 项目概述这次渗透测试的目标是HackMyVM平台上的Omura靶机。作为一款专注于网络安全训练的虚拟机,Omura模拟了真实环境中常见的漏洞组合。整个测试过程从基础信息收集开始,逐步深入,最终通过iSCSI服务配置不当获取root权限。本文将详细记录…

2026/9/25 1:54:45 阅读更多 →
Qt+ROS嵌入式RViz开发实战:Linux环境下的可调试集成方案

Qt+ROS嵌入式RViz开发实战:Linux环境下的可调试集成方案

简介:本资源是一个面向ROS初学者与Qt跨平台开发者的Linux环境实战示例,聚焦于Qt应用程序与RVIZ可视化工具的深度集成,解决机器人开发中UI交互与3D数据协同显示的核心问题。压缩包共14个文件,含4个CPP源码、3个头文件(h…

2026/9/25 1:54:45 阅读更多 →
ISO TR 4804-2020全面指南:从技术报告解读到工程落地实践

ISO TR 4804-2020全面指南:从技术报告解读到工程落地实践

简介:ISO/TR 4804-2020 是国际标准化组织发布的技术报告,聚焦道路车辆自动驾驶系统的安全与网络安全设计、验证及确认,面向汽车制造商、零部件供应商及功能安全、信息安全工程师。报告覆盖系统架构设计、故障检测与处理、冗余设计等安全工程方…

2026/9/25 1:54:45 阅读更多 →

最新新闻

用 workbuddy 克隆 arcs_mini 后,如何用 TaoToken 统一 Key 打通开发环境配置

用 workbuddy 克隆 arcs_mini 后,如何用 TaoToken 统一 Key 打通开发环境配置

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/25 2:32:09 阅读更多 →
物业收费数字化转型:系统架构与实施策略

物业收费数字化转型:系统架构与实施策略

1. 物业收费数字化转型的行业背景物业行业正面临前所未有的变革压力。传统纸质台账、人工催缴的收费模式已经难以适应现代社区管理需求。根据行业调研数据显示,采用传统收费方式的物业企业平均收费周期长达45天,而业主缴费体验满意度不足60%。这种低效运…

2026/9/25 2:32:09 阅读更多 →
LiteLLM 最新 API 与基础能力全解:用 TaoToken 统一 Key 打通多模型调用

LiteLLM 最新 API 与基础能力全解:用 TaoToken 统一 Key 打通多模型调用

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/25 2:32:09 阅读更多 →
OpenCV Tracking 模块入门教程:使用 KCF 跟踪器实现视频单目标跟踪

OpenCV Tracking 模块入门教程:使用 KCF 跟踪器实现视频单目标跟踪

计算机视觉图像处理机器学习 【免费下载链接】opencv_contrib 项目地址: https://gitcode.com/gh_mirrors/ope/opencv_contrib 点击查看 免费下载 本教程以 opencv_contrib 仓库 modules/tracking 模块中的官方入门文档 tutorial_introduction_to_tracker.markdown…

2026/9/25 2:32:09 阅读更多 →
使用 Hypothesis 差分测试验证性能优化:让优化版算法与原版实现保持行为一致

使用 Hypothesis 差分测试验证性能优化:让优化版算法与原版实现保持行为一致

测试开发工具 【免费下载链接】hypothesis The property-based testing library for Python 项目地址: https://gitcode.com/gh_mirrors/hy/hypothesis 点击查看 免费下载 性能优化是软件开发中最容易出现隐蔽回归的环节:优化后的代码往往更快&#xff…

2026/9/25 2:32:09 阅读更多 →
吴恩达机器学习作业实战指南:无答案版校准+答案版反向工程

吴恩达机器学习作业实战指南:无答案版校准+答案版反向工程

简介:本资源是面向机器学习初学者与自学者的吴恩达《Machine Learning》课程配套实践套件,覆盖课程全部核心算法实验,助力系统掌握监督学习、无监督学习与降维等关键内容。压缩包共1028个文件,总计202.33MB,包含623个M…

2026/9/25 2:31:09 阅读更多 →

日新闻

AI元人文:从工具使用到思维重构的深度探索

AI元人文:从工具使用到思维重构的深度探索

最近半年我一直在琢磨一件事:AI元人文到底是什么?说白了,就是“用元视角重新审视人与AI的关系”,也在“探索AI如何反向逼着我们发现自己的思考边界”。标题里的“元探索”,在我看就是一层套一层的追问——当你用AI解决…

2026/9/25 0:00:41 阅读更多 →
Python+CNN车牌识别实战:从数据预处理到模型训练与部署

Python+CNN车牌识别实战:从数据预处理到模型训练与部署

简介:基于Python与卷积神经网络的车牌识别项目,面向计算机视觉初学者及智能交通开发者,目标是帮助用户掌握从数据预处理、模型构建到实际部署的完整流程。压缩包共25个文件,包含jpg/png图像样本、py训练脚本、md说明文档、dat数据…

2026/9/25 0:00:41 阅读更多 →
Vim基础操作全攻略:保存退出、模式切换与高频命令实战

Vim基础操作全攻略:保存退出、模式切换与高频命令实战

1. 项目概述1.1 核心需求解析今天聊聊Vim。写这个题目的原因是:几乎每个后端开发者、运维人员、数据工程师某天都会遇到一个场景——深夜加班,服务器登录界面只有黑底白字,编辑器只有vi/vim,你必须在五分钟内完成一次配置修改并保…

2026/9/25 0:00:41 阅读更多 →

周新闻

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡…

2026/9/24 14:34:13 阅读更多 →
Word表格编号全攻略:从列表编号到题注交叉引用

Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技…

2026/9/24 9:10:42 阅读更多 →
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&…

2026/9/24 14:33:56 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/24 12:50:34 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/24 14:33:48 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/24 12:49:17 阅读更多 →