From 26a56b4d9f5b17cf9e6588a6e4c93eff5ee153e8 Mon Sep 17 00:00:00 2001 From: zhouchengrong Date: Mon, 24 Jun 2024 16:35:34 +0800 Subject: [PATCH] =?UTF-8?q?feat=20=E6=A8=A1=E7=89=B9=E9=A2=84=E5=A4=84?= =?UTF-8?q?=E7=90=86=E6=8E=A5=E5=8F=A3=20fix?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/api/api_design.py | 16 +++++++++++- app/schemas/design.py | 4 +++ app/service/design/model_process_service.py | 28 +++++++++++++++++++++ app/service/utils/oss_client.py | 4 +-- 4 files changed, 49 insertions(+), 3 deletions(-) create mode 100644 app/service/design/model_process_service.py diff --git a/app/api/api_design.py b/app/api/api_design.py index 18d5f80..ef0e085 100644 --- a/app/api/api_design.py +++ b/app/api/api_design.py @@ -3,8 +3,9 @@ import logging from fastapi import APIRouter, HTTPException -from app.schemas.design import DesignModel, DesignProgressModel +from app.schemas.design import DesignModel, DesignProgressModel, ModelProgressModel from app.schemas.response_template import ResponseModel +from app.service.design.model_process_service import model_transpose from app.service.design.service import generate from app.service.design.utils.redis_utils import Redis @@ -38,3 +39,16 @@ def get_progress(request_data: DesignProgressModel): logger.warning(f"get_progress Run Exception @@@@@@:{e}") raise HTTPException(status_code=404, detail=str(e)) return ResponseModel(data=data) + + +@router.post('/model_process') +def model_process(request_data: ModelProgressModel): + 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) diff --git a/app/schemas/design.py b/app/schemas/design.py index 994deb4..edcc392 100644 --- a/app/schemas/design.py +++ b/app/schemas/design.py @@ -52,3 +52,7 @@ class DesignModel(BaseModel): class DesignProgressModel(BaseModel): process_id: str + + +class ModelProgressModel(BaseModel): + model_path: str diff --git a/app/service/design/model_process_service.py b/app/service/design/model_process_service.py new file mode 100644 index 0000000..fffbd67 --- /dev/null +++ b/app/service/design/model_process_service.py @@ -0,0 +1,28 @@ +import io + +from app.service.utils.oss_client import oss_get_image, oss_upload_image + + +def model_transpose(image_path): + bucket = image_path.split("/", 1)[0] + object_name = image_path.split("/", 1)[1] + new_object_name = f'{object_name[:object_name.rfind(".")]}.png' + image = oss_get_image(bucket=bucket, object_name=object_name, data_type="PIL") + image = image.convert("RGBA") + data = image.getdata() + # + new_data = [] + for item in data: + if item[0] >= 230 and item[1] >= 230 and item[2] >= 230: + new_data.append((255, 255, 255, 0)) + else: + new_data.append(item) + image.putdata(new_data) + + image_data = io.BytesIO() + image.save(image_data, format='PNG') + image_data.seek(0) + image_bytes = image_data.read() + oss_upload_image(bucket=bucket, object_name=new_object_name, image_bytes=image_bytes) + image_path = f"{bucket}/{new_object_name}" + return image_path diff --git a/app/service/utils/oss_client.py b/app/service/utils/oss_client.py index e293117..7ebeb3f 100644 --- a/app/service/utils/oss_client.py +++ b/app/service/utils/oss_client.py @@ -55,12 +55,12 @@ if __name__ == '__main__': # url = "aida-collection-element/11523/Moodboard/f60af0d2-94c2-48f9-90ff-74b8e8a481b5.jpg" # url = "aida-sys-image/images/female/outwear/0628000054.jpg" # url = "aida-users/89/product_image/string-89.png" - url = "aida-users/89/single_logo/123-89.png" + url = "test/845046c7-4f62-4f54-a4a9-c26d49c6969335b5b3a9-d335-4871-a46c-3cc3caf07da259629dfd1f1f555a2e2a9def7e719366.png" # url = 'aida-users/89/relight_image/123-89.png' # url = 'aida-users/89/relight_image/123-89.png' # url = 'aida-users/89/relight_image/123-89.png' # url = "aida-users/89/sketchboard/female/Dress/e6724ab7-8d3f-4677-abe0-c3e42ab7af85.jpeg" - read_type = "cv2" + read_type = "PIL " if read_type == "cv2": img = oss_get_image(bucket=url.split('/')[0], object_name=url[url.find('/') + 1:], data_type=read_type) cv2.imshow("", img)