Skip to content

导出 PNG ​

API PLAYGROUND

导出 PNG

POST /api/render/v2

环境配置

Base URL 和 Authorization 修改后自动保存,供本站 Playground 共用。

服务地址,请求路径固定为 /api/render/v2。
请求头配置
必填Bearer API Key,格式为 Bearer <API_KEY>。如何鉴权?
可选业务请求标识,省略时由服务生成。
请求体配置
必填 · FileContentLatest完整项目内容,对应文档中的 content。粘贴 JSON 或导入 .algeo 文件。
可选 · number从 1 开始的画板序号,留空使用默认值 1。
可选 · object渲染母版 JSON 对象,可从大角几何母版页面下载。
可选 · number输出设备像素比,正数;默认 1,只放大物理像素尺寸。 视图内兼容参数优先于此值。
服务根据目标画板自动选择 2D 或 3D 渲染,并读取对应视图参数;view2D 与 view3D 互斥。自动模式省略视图参数,使用固定视图或默认值。

响应

发送请求后,在这里查看 HTTP 状态码和响应内容。

POST /api/render/v2

Base URL: https://api.dajiaoai.com

接口地址: POST /api/render/v2

接口接收一个符合大角工程文件(.algeo)数据协议的项目内容,渲染指定画板并返回导出文件地址与元数据。

尺寸单位

view2D 的边界使用画板逻辑坐标,scale 表示每个逻辑单位对应的像素数,返回结果中的 width 和 height 表示图片像素尺寸。工程内字号、线宽等视觉尺寸使用 px;如果你手头的规范使用 pt,请查看尺寸单位与换算。

鉴权方式见鉴权说明。

推荐使用此接口导出 PNG,支持 2D 与 3D 画板。已有 /api/render 接入可查看旧版接口与迁移说明。

请求头 ​

请求头类型必填说明
Authorizationstring是Bearer API Key,格式为 Bearer <API_KEY>,无默认值。
Content-Typestring是固定为 application/json。
x-request-idstring否业务请求标识,省略时服务自动生成 UUID。

请求体 ​

渲染模式

content 必填。view2D 与 view3D 互斥,不能同时传入。服务根据目标画板自动选择 2D 或 3D 渲染,并读取对应视图参数;视图参数不会切换画板类型。省略视图参数时,使用固定视图或协议默认值。

所有数值参数均需为有限数值。

字段类型必填说明
contentFileContentLatest是要渲染的完整项目内容,无默认值。格式见工程文件数据协议。
slideIndexnumber否目标画板序号,从 1 开始的正整数,默认 1。
templateobject否渲染母版,省略时沿用目标画板现有样式。可下载母版数据。
transparentboolean否是否跳过背景色填充,默认 false。
pixelRationumber否输出设备像素比,须大于 0,默认 1
view2Dobject否指定 2D 视口,详见 2D 视口参数。
view3Dobject否指定 3D 画板的视图参数,详见 3D 视图参数。

view2D:2D 视口 ​

四个边界可以全部省略;只要提供其中一个,就必须完整提供四个,且满足 left < right、bottom < top。边界优先使用显式值,其次为画板固定范围,否则使用协议默认范围;不继承编辑相机。

字段类型默认值 / 必填说明
leftnumber四项同时提供或省略左边界,逻辑坐标。
rightnumber四项同时提供或省略右边界,逻辑坐标。
bottomnumber四项同时提供或省略下边界,逻辑坐标。
topnumber四项同时提供或省略上边界,逻辑坐标。
scalenumber固定范围 scale,否则 50每个逻辑单位对应的像素数,须大于 0。
pixelRationumber顶层值,否则 1兼容参数,须大于 0;优先于顶层 pixelRatio。

pixelRatio 按比例缩放 PNG 的物理像素尺寸,不改变逻辑视口或相机缩放比例。scale 优先使用显式值,其次为固定范围 scale,否则为 50。view2D 可以只传 scale 或 pixelRatio,也可以为空对象。

未提供显式边界且画板无固定范围时,X、Y 均使用 [-10.24, 10.24]。配合默认 scale: 50、pixelRatio: 1,输出为 1024 × 1024 像素。只修改 scale 不会改变该默认逻辑范围。

view3D:3D 视图 ​

目标画板为 3D 时,读取 view3D 作为本次导出视图。对象内所有属性均可选。

各字段依次使用显式值、已启用的固定三维视图、下表中的协议默认值。请求角度使用度数,响应 camera 中的角度仍使用弧度。

字段类型默认值说明
offset[number, number, number][0, 0, 0]画面中心的世界坐标。
yawDegnumber45水平观察角,单位为度。
pitchDegnumber45俯仰观察角,单位为度。
projectionstringorthographicorthographic(正交)、perspective(透视)或 oblique(斜投影)。
obliqueAngleDegnumber45斜投影方向角,单位为度。
obliqueScaleRationumber0.5斜投影退行轴缩放比例,须大于或等于 0。
scalenumber0.1相机缩放比例,须大于 0。
widthinteger1920完整逻辑视口宽度,须为正整数。
heightinteger1080完整逻辑视口高度,须为正整数。
cropobject不裁剪裁剪矩形,详见下文;省略时会继承固定视图已启用的裁剪。
pixelRationumber顶层值,否则 1兼容参数,须大于 0;优先于顶层 pixelRatio。

crop 使用完整逻辑视口内的坐标,左上为原点,left、top、right、bottom 四项均必填,要求 0 <= left < right <= width、0 <= top < bottom <= height。服务先渲染完整视口,再裁剪;裁剪不会改变相机构图。

未裁剪时,PNG 物理像素尺寸 = 完整逻辑视口尺寸 × 实际生效的 pixelRatio。例如 width: 960、height: 540、顶层 pixelRatio: 2 时,输出为 1920 × 1080 像素。裁剪后输出宽高分别为 (right - left) × pixelRatio、(bottom - top) × pixelRatio。

PNG 尺寸上限

2D、3D 导出的最终 PNG 物理宽、高均不得超过 2048 像素。3D 有裁剪时,上限针对裁剪后的最终物理尺寸,不是完整逻辑视口。

请求示例 ​

将主站或 SDK 导出的完整项目保存为 project.algeo,以下示例使用 jq 将项目包装为 content。3D 示例要求第 1 个画板为 3D 画板。

按目标画板类型自动选择渲染模式,使用固定视图或协议默认值:

bash
jq '{content: ., slideIndex: 1}' project.algeo | \
  curl -X POST https://api.dajiaoai.com/api/render/v2 \
    -H "Authorization: Bearer djo_xxx" \
    -H "Content-Type: application/json" \
    --data-binary @-

指定 2D 视图:

bash
jq '{
  content: .,
  slideIndex: 1,
  pixelRatio: 1,
  view2D: {
    left: -10,
    right: 10,
    bottom: -10,
    top: 10,
    scale: 50
  }
}' project.algeo | \
  curl -X POST https://api.dajiaoai.com/api/render/v2 \
    -H "Authorization: Bearer djo_xxx" \
    -H "Content-Type: application/json" \
    --data-binary @-

指定 3D 视图:

bash
jq '{
  content: .,
  slideIndex: 1,
  pixelRatio: 1,
  view3D: {
    width: 1280,
    height: 720,
    projection: "orthographic",
    yawDeg: 45,
    pitchDeg: 45
  }
}' project.algeo | \
  curl -X POST https://api.dajiaoai.com/api/render/v2 \
    -H "Authorization: Bearer djo_xxx" \
    -H "Content-Type: application/json" \
    --data-binary @-

成功响应 ​

2D 渲染成功返回 200 OK。以上文指定 2D 视图的请求为例:

json
{
  "success": true,
  "url": "https://dl.easeplay.vip/dajiao-open/dev/mcp/customer-id/session-id/4fa2bc.png",
  "filename": "4fa2bc.png",
  "objectKey": "dajiao-open/dev/mcp/customer-id/session-id/4fa2bc.png",
  "slideIndex": 1,
  "viewBound": {
    "left": -10,
    "right": 10,
    "bottom": -10,
    "top": 10
  },
  "width": 1000,
  "height": 1000,
  "scale": 50,
  "pixelRatio": 1,
  "mimeType": "image/png",
  "size": 24831
}

2D、3D 响应均返回实际生效的 pixelRatio。3D 渲染成功同样返回 200 OK,使用实际 camera 参数替代 2D 响应中的 viewBound 与 scale:

json
{
  "success": true,
  "url": "https://dl.easeplay.vip/dajiao-open/dev/mcp/customer-id/session-id/4fa2bc.png",
  "filename": "4fa2bc.png",
  "objectKey": "dajiao-open/dev/mcp/customer-id/session-id/4fa2bc.png",
  "slideIndex": 1,
  "width": 1280,
  "height": 720,
  "pixelRatio": 1,
  "camera": {
    "offset": [0, 0, 0],
    "yaw": 0.7853981633974483,
    "pitch": 0.7853981633974483,
    "projection": "orthographic",
    "obliqueAngle": 0.7853981633974483,
    "obliqueScaleRatio": 0.5,
    "scale": 0.1
  },
  "mimeType": "image/png",
  "size": 24831
}

响应中的 width、height 是裁剪后最终 PNG 的物理像素尺寸;请求中的 view3D.width、view3D.height 是完整逻辑视口尺寸。像素比依次使用 view3D.pixelRatio、顶层 pixelRatio、默认值 1。响应 camera.yaw、camera.pitch、camera.obliqueAngle 仍为弧度。

失败响应 ​

HTTP 状态情况
400同时传入 view2D、view3D,或字段不符合 Schema,例如 crop: null。
422 / RENDER_INVALID_REQUEST视图与目标画板维度不匹配、解析后的边界或裁剪范围无效,或最终 PNG 物理宽、高任一超过 2048。

见渲染接口失败响应。