Files
AiDA_Python/app/api/api_design.py

175 lines
6.4 KiB
Python
Raw Normal View History

2024-06-13 14:31:14 +08:00
import json
2024-05-28 15:22:11 +08:00
import logging
2024-06-13 14:31:14 +08:00
from fastapi import APIRouter, HTTPException
2024-05-28 15:22:11 +08:00
2024-06-24 16:35:34 +08:00
from app.schemas.design import DesignModel, DesignProgressModel, ModelProgressModel
2024-06-13 14:31:14 +08:00
from app.schemas.response_template import ResponseModel
2024-06-24 16:35:34 +08:00
from app.service.design.model_process_service import model_transpose
2024-05-28 15:22:11 +08:00
from app.service.design.service import generate
2024-06-18 10:50:15 +08:00
from app.service.design.utils.redis_utils import Redis
2024-05-28 15:22:11 +08:00
router = APIRouter()
logger = logging.getLogger()
@router.post("/design")
def design(request_data: DesignModel):
"""
创建一个具有以下参数的请求体:
示例参数
{
"objects": [
{
"basic": {
"body_point_test": {
"waistband_right": [
336,
264
],
"hand_point_right": [
350,
303
],
"waistband_left": [
245,
274
],
"hand_point_left": [
219,
315
],
"shoulder_left": [
227,
155
],
"shoulder_right": [
338,
149
]
},
"layer_order": false,
"scale_bag": 0.7,
"scale_earrings": 0.16,
"self_template": true,
"single_overall": "overall",
"switch_category": ""
},
"items": [
{
"color": "229 214 200",
"icon": "none",
"image_id": 110205,
"offset": [
1,
1
],
"path": "aida-sys-image/images/female/trousers/0916000217.jpg",
"print": {
"IfSingle": false,
"print_path_list": []
},
"resize_scale": [
1.0,
1.0
],
"type": "Trousers"
},
{
"businessId": 493825,
"color": "209 125 29",
"elementId": 493825,
"icon": "none",
"image_id": 107101,
"offset": [
1,
1
],
"path": "aida-users/31/sketchboard/female/Blouse/de8f5656-d7ae-4642-bc90-f7f9d85da09b.jpg",
"print": {
"IfSingle": false,
"print_path_list": []
},
"resize_scale": [
1.0,
1.0
],
"type": "Blouse"
},
{
"body_path": "aida-users/31/models/female/845046c7-4f62-4f54-a4a9-c26d49c6969335b5b3a9-d335-4871-a46c-3cc3caf07da259629dfd1f1f555a2e2a9def7e719366.png",
"image_id": 82966,
"offset": [
1,
1
],
"resize_scale": [
1.0,
1.0
],
"type": "Body"
}
]
}
],
"process_id": "6878547032381675"
}
"""
2024-05-28 15:22:11 +08:00
try:
logger.info(f"design request item is : @@@@@@:{request_data.dict()}")
2024-05-28 15:22:11 +08:00
data = generate(request_data=request_data)
2024-06-13 14:31:14 +08:00
logger.info(f"design response @@@@@@:{json.dumps(data, indent=4)}")
2024-05-28 15:22:11 +08:00
except Exception as e:
logger.warning(f"design Run Exception @@@@@@:{e}")
2024-06-13 14:31:14 +08:00
raise HTTPException(status_code=404, detail=str(e))
return ResponseModel(data=data)
2024-06-18 10:50:15 +08:00
@router.post('/get_progress')
def get_progress(request_data: DesignProgressModel):
"""
获取design 进度
创建一个具有以下参数的请求体:
- **process_id**: 进度id
示例参数
{
"process_id": "6878547032381675"
}
"""
2024-06-18 10:50:15 +08:00
try:
logger.info(f"get_progress request item is : @@@@@@:{request_data.dict()}")
2024-06-18 10:50:15 +08:00
process_id = request_data.process_id
r = Redis()
data = r.read(key=process_id)
2024-06-19 10:53:11 +08:00
if data is None:
raise ValueError(f"No progress ID: {process_id}")
2024-06-18 10:50:15 +08:00
logging.info(f"get_progress process_id @@@@@@ : {process_id} , progress : {data}")
except Exception as e:
2024-06-19 10:53:11 +08:00
logger.warning(f"get_progress Run Exception @@@@@@:{e}")
2024-06-18 10:50:15 +08:00
raise HTTPException(status_code=404, detail=str(e))
return ResponseModel(data=data)
2024-06-24 16:35:34 +08:00
@router.post('/model_process')
def model_process(request_data: ModelProgressModel):
"""
获取模特图片预处理
创建一个具有以下参数的请求体:
- **model_path**: 模特图片的minio或s3 url地址
示例参数
{
"model_path": "aida-users/10/models/female/9c788f5b-b8c7-424c-b149-025aeb0bda51model.jpg"
}
"""
2024-06-24 16:35:34 +08:00
try:
logger.info(f"model_process request item is : @@@@@@:{request_data.dict()}")
data = model_transpose(image_path=request_data.model_path)
logger.info(f"model_process response @@@@@@:{json.dumps(data, indent=4)}")
except Exception as e:
logger.warning(f"model_process Run Exception @@@@@@:{e}")
raise HTTPException(status_code=404, detail=str(e))
return ResponseModel(data=data)