imgrender

生成图片

基于 JSX / HTML 生成图片,并返回图片链接

通过该接口,你可以将 JSX/HTML 代码片段直接生成并导出为高质量的图片(支持 WebP、PNG、JPEG)。

请求

请求方法与 URL

POST https://api.imgrender.net/open/v1/images/render

请求头参数

字段数据类型必填描述
X-API-Keystringyes用于请求授权,请参考 请求认证方式
Content-Typestringyes固定值:"application/json; charset=utf-8"

请求体参数

字段名类型必填描述默认值
contentstring描述图片布局和内容的 JSX/HTML 字符串。详情见 核心指南-
widthnumber输出图片的宽度(像素)。不传则根据内容自适应。-
heightnumber输出图片的高度(像素)。不传则根据内容自适应。-
formatstring输出图片的格式。支持 pngjpegwebpwebp
qualitynumber图片质量(0-100),仅对 jpegwebp 格式有效。-
fontsarray自定义字体配置列表,用于在内容中加载和渲染外部字体。详情见 自定义字体[]

响应

当请求成功时,HTTP 状态码为 200,并且会以 JSON 格式返回数据:

{
  "code": 0,
  "message": "ok",
  "data": {
    "url": "https://res.imgrender.net/6e31cfcd683a36d0522a8cc34e244379.jpg?sign=xxx"
  }
}
  • code:错误码,当错误码为 0 时,表示处理成功,其他值表示存在一定的问题。
  • message:提示信息,与code相对应,更多提示信息可查看状态码与错误码
  • data :返回的数据。当 code0 时返回,其中 url 为图片链接。图片链接的有效期为 5 分钟,请及时下载或展示图片。超时后,重新请求即可获取新的访问链接。

示例

下面是一个完整的请求示例,展示了如何注册一个名为 Geist 的自定义网络字体,并在 content 的行内样式中成功应用它:

curl -X POST http://localhost:8080/v1/images/render \
  -H "Content-Type: application/json" \
  -d '{
    "content": "<div style={{ fontFamily: \"Geist\", fontSize: \"48px\", color: \"#333\" }}>Hello Custom Font</div>",
    "width": 800,
    "height": 400,
    "format": "png",
    "fonts": [
      {
        "familyName": "Geist",
        "fontUrls": [
          "https://www.imgrender.net/test-assets/resvg/fonts/Geist/Geist-VariableFont_wght.ttf"
        ]
      }
    ]
  }'
const payload = {
  content: `<div style={{ fontFamily: 'Geist', fontSize: '48px', color: '#333' }}>
              Hello Custom Font
            </div>`,
  width: 800,
  height: 400,
  format: "png",
  fonts: [
    {
      familyName: "Geist",
      fontUrls: [
        "https://www.imgrender.net/test-assets/resvg/fonts/Geist/Geist-VariableFont_wght.ttf"
      ]
    }
  ]
};

fetch('http://localhost:8080/v1/images/render', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(payload)
})
.then(res => res.blob())
.then(blob => console.log('图片生成成功,已接收到 Blob 数据!'));

On this page