输入内容,生成太阳码

支持网址与文本。URL 字母表内约 ≤58 字符,含中文走字节模式(约 ≤44 字节)。

Ctrl / ⌘ + Enter 快速生成
GIF 动图 logo 只能输出 GIF

logo
建议正方形、透明背景;动图会自动保留动画
结果图

预览为等比缩放,下载得到原尺寸

提示
输入内容后点击「生成」
上传图片,解码内容

支持 PNG / JPG / GIF;带 logo、轻微旋转、拍照实图都能识别。

点击选择,或把图片拖到这里 上传后自动解析
不准备图片也能跑完整链路

  • 单张最大 24MB;透明背景按白底处理。
  • 中心带 logo、轻微旋转(实测 ±20°)、拍照实图都可识别。
  • 解不出时提示「未通过 Reed-Solomon 校验」,多为图片被裁掉或压缩过度。
解码结果

上传图片后,这里会显示内容与码型参数。

解码内容
—
上传微信「加好友」二维码

微信 -> 我 -> 头像 -> 二维码名片,截图后拖进来即可。程序会在服务端解出其中的链接。

点击选择好友二维码图片 也支持直接拖进来
尚未上传

  • 微信好友名片是标准二维码,内容是一条 https://u.wechat.com/... 链接。
  • 服务端支持 QR 版本 1~40、L/M/Q/H 纠错,截图、拍照、带轻微旋转都能读。
  • 解出的链接会直接作为太阳码内容,有效期与微信名片本身一致。
生成好友太阳码

参数与「生成」栏一致:格式、中心 logo(支持 GIF 动图)、角落徽标。

logo
生成结果

上传好友二维码后自动生成

接口文档与在线调试

每个接口都列了请求参数和返回参数,并带一个 TRY 可以直接发请求。 失败统一返回 {"error":"原因"} + 4xx 状态码。

POST /api/encode 输入内容,返回葵花码图片(png / jpg / svg / gif)或 JSON
curl
curl -X POST https://wx.xbao.fun/api/encode \
  -H 'Content-Type: application/json' \
  -d '{"text":"https://example.com/","format":"png","size":600}' \
  -o code.png
TRY
请求参数(JSON body,或同名的表单/query 字段)
参数类型必填说明
textstring是要编码的内容。URL 字符集内约 ≤58 字符;含中文/符号走字节模式,约 ≤44 字节。
formatstring否png(默认)/ jpg / svg / gif / json。
sizeint否位图边长,120~2000,默认 600。对 svg 无效。
marginint否位图四周白边像素,0~200,默认 0。
fg / bgstring否前景 / 背景色,#rrggbb,默认黑 / 白。
levelstring否允许的最低纠错等级 L/M/Q/H,默认 L;容量够时会自动取更高等级。
versionstring否auto(默认,v0~v2 取最小可容纳)/ 0 / 1 / 2 钉死版本。
maskint否-1(默认)自动在 32 种掩码里按评分取最优;0~31 可固定。
logostring否中心 logo:data:image/png;base64,... / http(s) URL / 裸 base64 / 服务器本地路径。传 GIF 动图且 format=gif 时,逐帧替换中心图,得到动图。
logoRatiofloat否logo 半径缩放,默认 1(半径 108/600)。>1.12 开始压到数据格,靠纠错兜底。
badgestring否角落徽标:default(默认,画微信小程序图标)/ none 不画 / 自定义图片 URL。
返回(format = png / jpg / gif / svg)
返回说明
响应体图片二进制,Content-Type 为 image/png / image/jpeg / image/gif / image/svg+xml。
X-WXCode-Version实际使用的版本(0~3),例如 0。
X-WXCode-Level实际纠错等级 L/M/Q/H。
X-WXCode-Mask选中的掩码(0~31)。
X-WXCode-Typebits18 位格式位常量。
X-WXCode-ModeNUMERIC / ALPHANUMERIC / BYTE。
X-WXCode-Codewords 等码字总数 / 数据码字 / 纠错码字数。
返回(format = json)
字段说明
text / version / level / mask内容、版本、纠错等级、掩码。
mode / transformed模式;ALPHANUMERIC 模式下附变换后的 QR 内文本。
typebits / codewords / ecCodewords格式位、总码字数、纠错码字数。
svg / pngBase64矢量 SVG 文本与 PNG 的 base64(一次拿全,前端好预览/下载)。
logoAnimated / logoFrameslogo 是否动图、共几帧。
GET /api/encode 同样的能力走 query,可直接放进 <img src>
图片标签
<img src="https://wx.xbao.fun/api/encode?text=https%3A%2F%2Fexample.com%2F&format=png&size=400">
TRY
请求参数(URL query)
参数说明
text必填,内容;记得 URL 编码(https%3A%2F%2F...)。
format / size / margin同 POST。做 <img> 时最常用 format=png&size=400。
fg / bg / level / version / mask同 POST。
logo / logoRatio / badge同 POST;query 里的 logo 建议用 http(s) URL 或已编码的 data URL。
返回
返回说明
响应体 + 响应头与 POST 完全一致:图片二进制 + X-WXCode-* 头(format=json 时返回 JSON)。
POST /api/decode 上传太阳码图片,解出内容
curl
curl -X POST https://wx.xbao.fun/api/decode \
  -F 'file=@code.png'
TRY
请求参数(三种投喂方式,选一种)
参数位置说明
filemultipart表单文件字段,-F 'file=@code.png';字段名也接受 image。
(原始二进制)bodyContent-Type: image/png,body 就是图片字节。
imageJSON{"image":"data:image/png;base64,..."} 或 http(s) 链接。
urlquery/JSON给图片地址,服务端下载后解析;单张上限 24MB。
返回
字段说明
payload解出的原始内容(逆变换后的链接/文本)。
family / version / ecLevel码型(WX_CODE)、版本、纠错等级。
mask / typebits掩码与 18 位格式位。
mode / count模式与字符计数。
qrTextALPHANUMERIC 模式下 QR 内部承载的文本(调试用)。
correctionsRS 纠正掉的码字数,0 表示读得很干净。
POST /api/qr 解析普通二维码(微信「加好友」名片),取出里面的链接
curl
curl -X POST https://wx.xbao.fun/api/qr \
  -F 'file=@friend.png'
# {"text":"https://u.wechat.com/xxxx","url":"https://u.wechat.com/xxxx", ...}
TRY
请求参数
参数位置说明
filemultipart二维码图片,字段名也接受 image。
image / urlJSONdata URL 或图片地址。
(原始二进制)body直接 POST 图片字节。
返回
字段说明
text二维码里的完整文本。
url如果文本里有链接,单独挑出来(微信好友码即 https://u.wechat.com/...),可直接丢给 /api/encode。
version / ecLevel / maskQR 版本(1~40)、纠错等级、掩码。
modeBYTE / NUMERIC / ALPHANUMERIC(含多段时为 A+B)。
modules边长模块数(= 17+4×version)。
correctionsRS 纠正掉的码字数。
通用约定
项说明
鉴权无,所有接口直接可用。
错误4xx/5xx + {"error":"原因"},例如容量不足会提示「载荷超出一枚葵花码容量」。
上传上限图片 8MB(logo)/ 24MB(待解析图片),JSON 16MB。
跨域图片响应已通过 Access-Control-Expose-Headers 暴露 X-WXCode-*。