diff --git a/static/integration.html b/static/integration.html index 391a70a..43fad06 100644 --- a/static/integration.html +++ b/static/integration.html @@ -223,12 +223,54 @@ const { code, data } = await res.json();

22. 生发密度与发际线高度  POST  /api/v1/hair/grow-22

-

使用 Bearer 访问令牌。图片字段三选一,发型序号男女均为 1–7。

-
curl -sS "$BASE_URL/api/v1/hair/grow-22" \
-  -H "Authorization: Bearer $ACCESS_TOKEN" \
-  -F "image_file=@./portrait.jpg" -F "gender=female" -F "hair_style=1,3" \
-  -F "hair_density=sparse" -F "hair_density=dense" -F "hairline_height=0"
-

至少选择一档密度,多选时重复提交 hair_density。高度在 −1 到 +1 之间,API 的负值上移、正值下移。每个发型与密度组合返回一项,图片按网关规则转成 URL。

+

使用现有对接账号的 Bearer 访问令牌,以 multipart/form-data 提交。

+ + + + + + + +
字段说明
image_file / image_url / image_base64图片三选一。
gender必填,female 或 male。
hair_style必填,序号 1–7,多选用逗号分隔,如 1,3。
hair_density至少一档,sparse 稀疏、normal 正常、dense 浓密。多选时重复提交同名字段。
hairline_height默认 0,范围 [-1, 1]。API 负值上移,正值下移。端点移动眉心到下巴垂直像素距离的 10%。
+

女性 1–7 依次为椭圆、花瓣、心形、直线、波浪、大花瓣、古典花瓣。男性 1–7 依次为椭圆、倒弧、M 形、直线、心形、柔和花瓣、波浪。

+ +

前端请求示例

+

以下示例使用网关测试页的滑块约定,正值向上,所以提交时取反。Content-Type 由浏览器根据 FormData 自动设置。

+
async function grow22({ file, gender, styles, densities, slider = 0, accessToken }) {
+  const body = new FormData();
+  body.append("image_file", file);
+  body.append("gender", gender);
+  body.append("hair_style", styles.join(","));
+  for (const density of densities) body.append("hair_density", density);
+  body.append("hairline_height", String(-slider));
+
+  const response = await fetch("/api/v1/hair/grow-22", {
+    method: "POST",
+    headers: { Authorization: `Bearer ${accessToken}` },
+    body,
+  });
+  const result = await response.json();
+  if (!response.ok || result.code !== 0) {
+    throw new Error(result.message || `HTTP ${response.status}`);
+  }
+  return result.data.results;
+}
+
+// 已登录后调用。选择 2 个发型和 2 档密度,共返回 4 项。
+// const results = await grow22({
+//   file: input.files[0], gender: "female", styles: [1, 3],
+//   densities: ["sparse", "dense"], slider: 0.5, accessToken,
+// });
+

请求返回 401 / 1009 时,按鉴权章节刷新令牌后重试一次。多选高度时,按高度分别发起请求。

+ +

展示结果与发际线预览

+ + + + + +
data.results[] 字段展示方式
order、hairline_type、hair_density标注发型和密度。多高度结果另外记录每次请求所用的高度。
image_url与输入照片同尺寸的透明发际线 PNG,可叠加在原图坐标的底图上。
grown_image_url生发图 URL。单项生成失败时返回 grown_image_base64: null,这一项仍保留发型和密度信息。
+

如需复刻测试页,首次以高度 0 生图,出图后再用同一个 Bearer 令牌请求接口 52,传 normalize_image=true 和 generate_grow_image=false。将各发型的 image_middle_url 叠在接口 52 的 input_image_url 上;如果底图改用首次生发图,先用 framing.source_to_processed 做同样的扶正裁切,再叠加。预览白线是设计参考线,实际出图边界以生发图为准。

打开接口 22 测试页

@@ -356,7 +398,7 @@ console.log(features.gene_style); // "自然型"

52. 发际线新规则与裁切  POST  /api/v1/hairline/generate-52

-

中下庭均值定位 middle,支持扶正裁切与生发。需要 访问令牌。以下示例开启扶正裁切,只获取预览:

+

按中庭与下庭总高度的 45% 定位 middle,支持扶正裁切与生发。需要 访问令牌。以下示例开启扶正裁切,只获取预览:

curl -sS "$BASE_URL/api/v1/hairline/generate-52" \
   -H "Authorization: Bearer $ACCESS_TOKEN" \
   -F 'image_file=@portrait.jpg' \