fix(接口2): female 1..5 换发型分支重绘透传 prompt(此前固定为默认值)
同 59e01d3(ubuntu3090_debug),按 main 代码形态适配:main 的 _call_local_redraw 尚无 prompt/max_side/unet_name 参数,此处只加 prompt。 - _call_local_redraw 增加 prompt 入参并转发给 run_redraw(None 时行为不变, 仍用内置默认「填充遮罩区域的头发」) - generate_grow_results_swap 换发型分支调用处补传 prompt;自定义提示词现可 替换工作流节点60文本(与 male / female 6/7 行为一致);prompt 不进 change_hair(swapHair),仅作用于最后一步 ComfyUI 发际线带重绘 - 换词后首次请求因缓存失效重载明显变慢(实测 45s vs 命中 8s),后续恢复 - 文档同步:接口文档.md prompt 参数说明更新
This commit is contained in:
+12
-4
@@ -52,15 +52,19 @@ _REPO = os.path.dirname(os.path.dirname(__file__))
|
||||
_TEXTURE_DIR = os.path.join(_REPO, "hairline_texture")
|
||||
_BLACK_TEXTURE_DIR = os.path.join(_REPO, "hairline_texture_black")
|
||||
|
||||
def _call_local_redraw(image_png_bytes, mask_png_bytes, timeout=300.0):
|
||||
def _call_local_redraw(image_png_bytes, mask_png_bytes, timeout=300.0,
|
||||
prompt=None):
|
||||
"""直接调 ComfyUI 重绘(替代原 local_test HTTP 服务)。
|
||||
|
||||
传 final 图 + 纯红遮罩 PNG,返回重绘后的 PNG bytes。
|
||||
失败抛异常(调用方负责 try/except 跳过)。
|
||||
|
||||
prompt:None 用 run_redraw 内置默认「填充遮罩区域的头发」,否则用传入的提示词。
|
||||
"""
|
||||
from .redraw import run_redraw
|
||||
# front=True:接口2 时延敏感,插到 ComfyUI 队列最前,避免排在接口3/5 的批量任务后面
|
||||
return run_redraw(image_png_bytes, mask_png_bytes, timeout=timeout, front=True)
|
||||
return run_redraw(image_png_bytes, mask_png_bytes, timeout=timeout,
|
||||
prompt=prompt, front=True)
|
||||
|
||||
# 发际线贴图档位:middle=默认(hairline_texture/),high/low 各自独立文件夹。
|
||||
_TEXTURE_DIRS = {
|
||||
@@ -259,7 +263,10 @@ def generate_grow_results_swap(image_bgr: np.ndarray, hair_styles: list[int] | N
|
||||
一致的原生生发(ComfyUI add_hair),由 _grow_native_one 完成(黑模板 + inpaint 遮罩)。
|
||||
|
||||
overlay 仍是发际线曲线透明层(与 generate_grow_results 完全一致)。
|
||||
prompt 仅用于原生生发分支(换发型分支的提示词由 redraw 流程内部固定)。
|
||||
prompt 两条分支都生效:换发型分支传入 _call_local_redraw,原生生发分支传给
|
||||
_grow_native_one。None/默认「填充遮罩区域的头发」时走 run_redraw 内置默认,
|
||||
不改变原行为;传不同提示词会使 ComfyUI 的 CLIP 条件缓存失效并重载(实测换词
|
||||
后首次请求重绘 45s vs 缓存命中 8s),后续相同提示词恢复快路径。
|
||||
Returns: list[dict] {"hairline_type","order","overlay","grown_png"(jpg bytes 或 None)};
|
||||
无人脸返回 None。单个发型换发型/重绘失败时 grown_png=None,不抛异常。
|
||||
"""
|
||||
@@ -312,7 +319,8 @@ def generate_grow_results_swap(image_bgr: np.ndarray, hair_styles: list[int] | N
|
||||
final_bytes = base64.b64decode(final_b64)
|
||||
mask_bytes = base64.b64decode(mask_b64)
|
||||
# 后端直接调 ComfyUI 重绘,返回重绘后的 PNG
|
||||
grown_png = _call_local_redraw(final_bytes, mask_bytes)
|
||||
grown_png = _call_local_redraw(final_bytes, mask_bytes,
|
||||
prompt=prompt)
|
||||
if grown_png is None:
|
||||
logger.warning("接口2 换发型:type=%s 重绘结果为空", key)
|
||||
except NoFaceError:
|
||||
|
||||
Reference in New Issue
Block a user