diff --git a/app/api/api_generate_image.py b/app/api/api_generate_image.py index 14271c6..7eb5bdf 100644 --- a/app/api/api_generate_image.py +++ b/app/api/api_generate_image.py @@ -1,9 +1,11 @@ import json import logging +import requests from fastapi import APIRouter, BackgroundTasks, HTTPException -from app.schemas.generate_image import GenerateImageModel, GenerateProductImageModel, GenerateSingleLogoImageModel, GenerateRelightImageModel, GenerateMultiViewModel, BatchGenerateProductImageModel, BatchGenerateRelightImageModel, AgentTollGenerateImageModel +from app.core.config import settings +from app.schemas.generate_image import GenerateImageModel, GenerateProductImageModel, GenerateSingleLogoImageModel, GenerateRelightImageModel, GenerateMultiViewModel, BatchGenerateProductImageModel, BatchGenerateRelightImageModel, AgentTollGenerateImageModel, Flux2ToProductImgModel from app.schemas.pose_transform import BatchPoseTransformModel from app.schemas.response_template import ResponseModel from app.service.generate_batch_image.service import start_product_batch_generate, start_relight_batch_generate, start_pose_transform_batch_generate @@ -154,49 +156,81 @@ def generate_single_logo_image(tasks_id: str): return ResponseModel(data=data['data']) -'''product image''' +"""product image flux2.0""" -@router.post("/generate_product_image") -def generate_product_image(request_item: GenerateProductImageModel, background_tasks: BackgroundTasks): +@router.post("/img_to_product") +async def img_to_product(request_data: Flux2ToProductImgModel): """ 创建一个具有以下参数的请求体: - **tasks_id**: 任务id 用于取消生成任务和获取生成结果 - **prompt**: 想要生成图片的描述词 - - **image_url**: 被生成图片的S3或minio url地址 - - **image_strength**: 生成强度,越低越接近原图 - - **product_type**: 输入single item 还是 overall item + - **image_path**: 被生成图片的S3或minio url地址 + - **infer_step**: 推理步数 - - 示例参数: + ### 请求体示例: + ```json + point { - "tasks_id": "123-89", - "prompt": "the best quality, masterpiece. detailed, high-res, simple background, studio photography, extremely detailed, updo, detailed face, face, close-up, HDR, UHD, 8K realistic, Highly detailed, simple background, Studio lighting", - "image_url": "aida-results/result_00097282-ebb2-11ee-a822-b48351119060.png", - "image_strength": 0.8, - "product_type": "overall" + "prompt": "Create realistic studio photo with real people model standing and wearing this garment, in white studio, Keep original model if present, or generate appropriate model, Standing pose, facing camera.", + "image_path":"aida-results/result_38151e0a-f83b-11f0-89f6-0242ac130002.png", + "infer_step":4, + "tasks_id":"123456-123" } + ``` """ try: - logger.info(f"generate_product_image request item is : @@@@@@:{json.dumps(request_item.dict(),indent=4)}") - service = GenerateProductImage(request_item) - background_tasks.add_task(service.get_result) + logger.info(f"img_to_product request item is : @@@@@@:{json.dumps(request_data.dict(), indent=4)}") + data = requests.post(f"http://{settings.A6000_SERVICE_HOST}:10090/api/v1/to_product", json=request_data.dict()) + logger.info(f"img_to_product response @@@@@@:{json.dumps(json.loads(data.content), indent=4)}") + return ResponseModel(data=json.loads(data.content)) except Exception as e: - logger.warning(f"generate_product_image Run Exception @@@@@@:{e}") - raise HTTPException(status_code=404, detail=str(e)) - return ResponseModel() + logger.warning(f"img_to_product Run Exception @@@@@@:{e}") -@router.get("/generate_product_image_cancel_cancel/{tasks_id}") -def generate_product_image(tasks_id: str): - try: - logger.info(f"generate_product_image_cancel_cancel request item is : @@@@@@:{tasks_id}") - data = generate_product_image_cancel(tasks_id) - logger.info(f"generate_product_image_cancel_cancel response @@@@@@:{data}") - except Exception as e: - logger.warning(f"generate_product_image_cancel_cancel Run Exception @@@@@@:{e}") - raise HTTPException(status_code=404, detail=str(e)) - return ResponseModel(data=data['data']) +'''product image 停用''' + + +# @router.post("/generate_product_image") +# def generate_product_image(request_item: GenerateProductImageModel, background_tasks: BackgroundTasks): +# """ +# 创建一个具有以下参数的请求体: +# - **tasks_id**: 任务id 用于取消生成任务和获取生成结果 +# - **prompt**: 想要生成图片的描述词 +# - **image_url**: 被生成图片的S3或minio url地址 +# - **image_strength**: 生成强度,越低越接近原图 +# - **product_type**: 输入single item 还是 overall item +# +# +# 示例参数: +# { +# "tasks_id": "123-89", +# "prompt": "the best quality, masterpiece. detailed, high-res, simple background, studio photography, extremely detailed, updo, detailed face, face, close-up, HDR, UHD, 8K realistic, Highly detailed, simple background, Studio lighting", +# "image_url": "aida-results/result_00097282-ebb2-11ee-a822-b48351119060.png", +# "image_strength": 0.8, +# "product_type": "overall" +# } +# """ +# try: +# logger.info(f"generate_product_image request item is : @@@@@@:{json.dumps(request_item.dict(), indent=4)}") +# service = GenerateProductImage(request_item) +# background_tasks.add_task(service.get_result) +# except Exception as e: +# logger.warning(f"generate_product_image Run Exception @@@@@@:{e}") +# raise HTTPException(status_code=404, detail=str(e)) +# return ResponseModel() +# +# +# @router.get("/generate_product_image_cancel_cancel/{tasks_id}") +# def generate_product_image(tasks_id: str): +# try: +# logger.info(f"generate_product_image_cancel_cancel request item is : @@@@@@:{tasks_id}") +# data = generate_product_image_cancel(tasks_id) +# logger.info(f"generate_product_image_cancel_cancel response @@@@@@:{data}") +# except Exception as e: +# logger.warning(f"generate_product_image_cancel_cancel Run Exception @@@@@@:{e}") +# raise HTTPException(status_code=404, detail=str(e)) +# return ResponseModel(data=data['data']) '''relight image 停用''' diff --git a/app/schemas/generate_image.py b/app/schemas/generate_image.py index 5062d78..815dd41 100644 --- a/app/schemas/generate_image.py +++ b/app/schemas/generate_image.py @@ -32,6 +32,13 @@ class GenerateProductImageModel(BaseModel): product_type: str +class Flux2ToProductImgModel(BaseModel): + tasks_id: str + prompt: str + image_url: str + image_strength: int + + class GenerateRelightImageModel(BaseModel): tasks_id: str prompt: str