From 795411f96cf032206b894c64c0abf22dff53c3d4 Mon Sep 17 00:00:00 2001 From: zhouchengrong Date: Thu, 25 Jul 2024 10:01:25 +0800 Subject: [PATCH] =?UTF-8?q?feat=20fix=20=20design=20pipeline=20=20contour?= =?UTF-8?q?=20detection=20=E6=96=B0=E5=A2=9E=E5=89=8D=E5=90=8E=E7=89=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/service/design/service.py | 16 +++--- app/service/design/utils/upload_image.py | 68 ++++++++++++------------ 2 files changed, 42 insertions(+), 42 deletions(-) diff --git a/app/service/design/service.py b/app/service/design/service.py index 9e29cc0..b8c5a8c 100644 --- a/app/service/design/service.py +++ b/app/service/design/service.py @@ -62,7 +62,7 @@ def generate(request_data): obj = futures[future] return_response[obj] = future.result()[0] return_png_mask.extend(future.result()[1]) - upload_results = process_images(return_png_mask) + # upload_results = process_images(return_png_mask) final_progress(process_id) return return_response @@ -90,13 +90,13 @@ def process_object(cfg, process_id, total): else: layers = sorted(layers.layer, key=lambda x: PRIORITY_DICT.get(x['name'], float('inf'))) # 上传所有图片 - for layer in layers: - if 'image' in layer.keys() and layer['image'] is not None: - uploaded_images.append({'image_obj': layer['image'], 'image_url': layer['image_url'], 'image_type': 'image'}) - if 'pattern_image' in layer.keys() and layer['pattern_image'] is not None: - uploaded_images.append({'image_obj': layer['pattern_image'], 'image_url': layer['pattern_image_url'], 'image_type': 'pattern_image'}) - if 'mask' in layer.keys() and layer['mask'] is not None and layer['mask_url'] is not None: - uploaded_images.append({'image_obj': layer['mask'], 'image_url': layer['mask_url'], 'image_type': 'mask'}) + # for layer in layers: + # if 'image' in layer.keys() and layer['image'] is not None: + # uploaded_images.append({'image_obj': layer['image'], 'image_url': layer['image_url'], 'image_type': 'image'}) + # if 'pattern_image' in layer.keys() and layer['pattern_image'] is not None: + # uploaded_images.append({'image_obj': layer['pattern_image'], 'image_url': layer['pattern_image_url'], 'image_type': 'pattern_image'}) + # if 'mask' in layer.keys() and layer['mask'] is not None and layer['mask_url'] is not None: + # uploaded_images.append({'image_obj': layer['mask'], 'image_url': layer['mask_url'], 'image_type': 'mask'}) # 合成 items_response['synthesis_url'] = synthesis(layers, body_size, basic_info) diff --git a/app/service/design/utils/upload_image.py b/app/service/design/utils/upload_image.py index 610c188..e48dabd 100644 --- a/app/service/design/utils/upload_image.py +++ b/app/service/design/utils/upload_image.py @@ -17,39 +17,39 @@ from app.service.utils.decorator import RunTime from app.service.utils.oss_client import oss_upload_image -# @RunTime -# def upload_png_mask(front_image, object_name, mask=None): -# try: -# mask_url = None -# if mask is not None: -# mask_inverted = cv2.bitwise_not(mask) -# # 将掩模的3通道转换为4通道,白色部分不透明,黑色部分透明 -# rgba_image = cv2.cvtColor(mask_inverted, cv2.COLOR_BGR2BGRA) -# rgba_image[rgba_image[:, :, 0] == 0] = [0, 0, 0, 0] -# # image_bytes = io.BytesIO() -# # image_bytes.write(cv2.imencode('.png', rgba_image)[1].tobytes()) -# # image_bytes.seek(0) -# # mask_url = f"{AIDA_CLOTHING}/{minio_client.put_object('aida-clothing', f'mask/mask_{object_name}.png', image_bytes, len(image_bytes.getvalue()), content_type='image/png').object_name}" -# # oss upload #################### -# req = oss_upload_image(bucket=AIDA_CLOTHING, object_name=f"mask/mask_{object_name}.png", image_bytes=cv2.imencode('.png', rgba_image)[1]) -# mask_url = f"{AIDA_CLOTHING}/mask/mask_{object_name}.png" -# -# image_data = io.BytesIO() -# front_image.save(image_data, format='PNG') -# image_data.seek(0) -# image_bytes = image_data.read() -# # image_url = f"{AIDA_CLOTHING}/{minio_client.put_object('aida-clothing', f'image/image_{object_name}.png', io.BytesIO(image_bytes), len(image_bytes), content_type='image/png').object_name}" -# req = oss_upload_image(bucket=AIDA_CLOTHING, object_name=f"image/image_{object_name}.png", image_bytes=image_bytes) -# image_url = f"{AIDA_CLOTHING}/image/image_{object_name}.png" -# return front_image, image_url, mask_url -# except Exception as e: -# logging.warning(f"upload_png_mask runtime exception : {e}") - - @RunTime def upload_png_mask(front_image, object_name, mask=None): - mask_url = None - if mask is not None: - mask_url = f"{AIDA_CLOTHING}/mask/mask_{object_name}.png" - image_url = f"{AIDA_CLOTHING}/image/image_{object_name}.png" - return front_image, image_url, mask_url + try: + mask_url = None + if mask is not None: + mask_inverted = cv2.bitwise_not(mask) + # 将掩模的3通道转换为4通道,白色部分不透明,黑色部分透明 + rgba_image = cv2.cvtColor(mask_inverted, cv2.COLOR_BGR2BGRA) + rgba_image[rgba_image[:, :, 0] == 0] = [0, 0, 0, 0] + # image_bytes = io.BytesIO() + # image_bytes.write(cv2.imencode('.png', rgba_image)[1].tobytes()) + # image_bytes.seek(0) + # mask_url = f"{AIDA_CLOTHING}/{minio_client.put_object('aida-clothing', f'mask/mask_{object_name}.png', image_bytes, len(image_bytes.getvalue()), content_type='image/png').object_name}" + # oss upload #################### + req = oss_upload_image(bucket=AIDA_CLOTHING, object_name=f"mask/mask_{object_name}.png", image_bytes=cv2.imencode('.png', rgba_image)[1]) + mask_url = f"{AIDA_CLOTHING}/mask/mask_{object_name}.png" + + image_data = io.BytesIO() + front_image.save(image_data, format='PNG') + image_data.seek(0) + image_bytes = image_data.read() + # image_url = f"{AIDA_CLOTHING}/{minio_client.put_object('aida-clothing', f'image/image_{object_name}.png', io.BytesIO(image_bytes), len(image_bytes), content_type='image/png').object_name}" + req = oss_upload_image(bucket=AIDA_CLOTHING, object_name=f"image/image_{object_name}.png", image_bytes=image_bytes) + image_url = f"{AIDA_CLOTHING}/image/image_{object_name}.png" + return front_image, image_url, mask_url + except Exception as e: + logging.warning(f"upload_png_mask runtime exception : {e}") + + +# @RunTime +# def upload_png_mask(front_image, object_name, mask=None): +# mask_url = None +# if mask is not None: +# mask_url = f"{AIDA_CLOTHING}/mask/mask_{object_name}.png" +# image_url = f"{AIDA_CLOTHING}/image/image_{object_name}.png" +# return front_image, image_url, mask_url