|
|
@@ -681,24 +681,9 @@ async def _process_scene_images(aigc_clazz, run_main, return_data_check_before_d
|
|
|
msg_type="scene_progress",
|
|
|
progress=product_scene_progress
|
|
|
)
|
|
|
- aigc_clazz.center_paste_image(ceshi_image_path, save_image_path)
|
|
|
- image_path = aigc_clazz.generateProductScene(
|
|
|
- save_image_path, product_scene_prompt, save_image_path
|
|
|
- )
|
|
|
- goods_art_dict_info_item["场景图"] = image_path
|
|
|
- new_goods_dict[goods_art_no_info]["货号资料"][idx_key] = goods_art_dict_info_item
|
|
|
- product_scene_progress["folder"] = save_image_path.replace("场景图.jpg", "")
|
|
|
- await sendAsyncMessage(
|
|
|
- msg="场景图处理完成",
|
|
|
- goods_arts=[goods_art_no],
|
|
|
- status="场景图处理完成",
|
|
|
- msg_type="scene_progress",
|
|
|
- progress=product_scene_progress
|
|
|
- )
|
|
|
else:
|
|
|
goods_art_dict_info_item["场景图"] = ""
|
|
|
new_goods_dict[goods_art_no_info]["货号资料"][idx_key] = goods_art_dict_info_item
|
|
|
- print("场景图处理异常",e)
|
|
|
os.remove(save_image_path)
|
|
|
# product_scene_finish_progress -= 1
|
|
|
product_scene_error_progress += 1
|
|
|
@@ -740,70 +725,7 @@ async def _process_scene_images(aigc_clazz, run_main, return_data_check_before_d
|
|
|
return_data_check_before_detail["data"]["goods_no_dict"] = new_goods_dict
|
|
|
|
|
|
return return_data_check_before_detail
|
|
|
-def _sync_model_gen_logic(aigc_clazz, goods_art_dict_info_item, man_id, women_id, save_root_path):
|
|
|
- """纯同步逻辑,用于在线程池中执行"""
|
|
|
- ceshi_image_path = goods_art_dict_info_item.get("pics").get("侧视-抠图")
|
|
|
- save_image_path = f"{save_root_path}模特图.jpg"
|
|
|
-
|
|
|
- if os.path.isfile(save_image_path):
|
|
|
- return {"success": True, "path": save_image_path}
|
|
|
-
|
|
|
- try:
|
|
|
- shutil.copy(ceshi_image_path, save_image_path)
|
|
|
- # 假设性别信息在货号资料里,或者需要从外部传入。这里参考原代码逻辑:
|
|
|
- # 原代码: gender = goods_art_dict_info.get("性别","女") -> 这里的 goods_art_dict_info 是款号级别的
|
|
|
- # 为了在线程池中运行,我们需要把 model_id 算好传进来,或者把整个款号信息传进来
|
|
|
- # 这里简化处理,假设我们只处理生成步骤,model_id 由调用方决定
|
|
|
-
|
|
|
- # 由于线程池函数无法轻松访问闭包变量,最稳妥的方式是将所有依赖项作为参数传入
|
|
|
- # 但为了保持代码简洁,我们直接在主异步函数中计算 model_id,然后传给一个只负责“复制+生成”的同步函数
|
|
|
-
|
|
|
- # 重新设计:
|
|
|
- gender = "女" # 默认,实际应从数据源获取
|
|
|
- # 由于 _process_single_model_item 签名限制,我们直接在下面主函数中内联线程池调用更清晰
|
|
|
-
|
|
|
- image_path = aigc_clazz.generateUpperShoes(save_image_path, man_id if "男" in gender else women_id, save_image_path)
|
|
|
- return {"success": True, "path": image_path}
|
|
|
- except Exception as e:
|
|
|
- if os.path.exists(save_image_path):
|
|
|
- try: os.remove(save_image_path)
|
|
|
- except: pass
|
|
|
- return {"success": False, "error": str(e)}
|
|
|
-async def _process_single_model_item(aigc_clazz, goods_art_dict_info_item, man_id, women_id, save_root_path):
|
|
|
- """将单个货号的模特图生成逻辑提取出来,放在线程池中运行"""
|
|
|
- def sync_generate():
|
|
|
- ceshi_image_path = goods_art_dict_info_item.get("pics").get("侧视-抠图")
|
|
|
- save_image_path = f"{save_root_path}模特图.jpg"
|
|
|
-
|
|
|
- # 如果已存在则直接返回
|
|
|
- if os.path.isfile(save_image_path):
|
|
|
- return {"success": True, "path": save_image_path}
|
|
|
-
|
|
|
- try:
|
|
|
- # 同步文件复制
|
|
|
- shutil.copy(ceshi_image_path, save_image_path)
|
|
|
-
|
|
|
- gender = goods_art_dict_info_item.get("性别", "女") # 注意:这里可能需要从外层传入性别,或者从 goods_art_dict_info 获取
|
|
|
- # 修正:性别通常在 goods_art_dict_info (款号级别) 而不是货号级别,需根据实际数据结构调整
|
|
|
- # 假设我们在外层已经确定了 model_id,这里只负责生成
|
|
|
- # 为了简化,我们假设 model_id 已经由外层确定并传入,或者在这里重新判断
|
|
|
-
|
|
|
- # 注意:原代码中 gender 是从 goods_art_dict_info (款号信息) 获取的
|
|
|
- # 这里我们需要确保能访问到正确的性别信息。
|
|
|
- # 由于函数签名限制,建议在外层处理好 model_id 后传入
|
|
|
-
|
|
|
- # 这里暂时保留原逻辑的简化版,实际使用时请确保 model_id 正确传递
|
|
|
- # 由于无法直接访问外层的 gender 变量,建议修改函数签名传入 model_id
|
|
|
- raise Exception("请使用带 model_id 的版本")
|
|
|
- except Exception as e:
|
|
|
- if os.path.exists(save_image_path):
|
|
|
- try: os.remove(save_image_path)
|
|
|
- except: pass
|
|
|
- return {"success": False, "error": str(e)}
|
|
|
|
|
|
- loop = asyncio.get_event_loop()
|
|
|
- # 注意:由于需要访问 gender 来决定 model_id,建议重构为传入 model_id
|
|
|
- return await loop.run_in_executor(None, lambda: _sync_model_gen_logic(aigc_clazz, goods_art_dict_info_item, man_id, women_id, save_root_path))
|
|
|
async def _process_model_images(aigc_clazz, run_main, return_data_check_before_detail, upper_footer_params):
|
|
|
"""处理模特图生成"""
|
|
|
# 参数验证
|