From 87988d7ebee903204eb66cb20de2dd4659e1d513 Mon Sep 17 00:00:00 2001 From: zhouchengrong Date: Tue, 27 Aug 2024 11:47:22 +0800 Subject: [PATCH] =?UTF-8?q?feat=20fix=20=20=20design=20mask=20=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E4=B8=BA=E9=80=8F=E6=98=8E=E8=83=8C=E6=99=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/service/design/items/pipelines/split.py | 25 +++++++++++++++------ 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/app/service/design/items/pipelines/split.py b/app/service/design/items/pipelines/split.py index 62e61f9..5fb568e 100644 --- a/app/service/design/items/pipelines/split.py +++ b/app/service/design/items/pipelines/split.py @@ -1,3 +1,4 @@ +import io import logging import cv2 @@ -37,8 +38,8 @@ class Split(object): result['front_image'], result["front_image_url"], _ = upload_png_mask(result_front_image_pil, f'{generate_uuid()}', mask=None) height, width = front_mask.shape - mask_image = np.zeros((height, width, 4), dtype=np.uint8) - mask_image[front_mask != 0] = [0, 0, 255, 255] + mask_image = np.zeros((height, width, 3)) + mask_image[front_mask != 0] = [0, 0, 255] if result["name"] in ('blouse', 'dress', 'outwear', 'tops'): result_back_image = np.zeros_like(rgba_image) @@ -46,14 +47,24 @@ class Split(object): result_back_image[back_mask != 0] = rgba_image[back_mask != 0] result_back_image_pil = Image.fromarray(cvtColor(result_back_image, COLOR_BGR2RGBA)) result['back_image'], result["back_image_url"], _ = upload_png_mask(result_back_image_pil, f'{generate_uuid()}', mask=None) - mask_image[back_mask != 0] = [0, 255, 0, 255] + mask_image[back_mask != 0] = [0, 255, 0] - image_bytes = cv2.imencode(".png", mask_image)[1].tobytes() - req = oss_upload_image(bucket=AIDA_CLOTHING, object_name=f"mask/mask_{generate_uuid()}.png", image_bytes=image_bytes) + rbga_mask = rgb_to_rgba(mask_image, front_mask + back_mask) + mask_pil = Image.fromarray(cvtColor(rbga_mask.astype(np.uint8), COLOR_BGR2RGBA)) + image_data = io.BytesIO() + mask_pil.save(image_data, format='PNG') + image_data.seek(0) + image_bytes = image_data.read() + req = oss_upload_image(bucket=AIDA_CLOTHING, object_name=f"mask/mask_{generate_uuid()}.jpg", image_bytes=image_bytes) result['mask_url'] = req.bucket_name + "/" + req.object_name else: - image_bytes = cv2.imencode(".png", mask_image)[1].tobytes() - req = oss_upload_image(bucket=AIDA_CLOTHING, object_name=f"mask/mask_{generate_uuid()}.png", image_bytes=image_bytes) + rbga_mask = rgb_to_rgba(mask_image, front_mask) + mask_pil = Image.fromarray(cvtColor(rbga_mask.astype(np.uint8), COLOR_BGR2RGBA)) + image_data = io.BytesIO() + mask_pil.save(image_data, format='PNG') + image_data.seek(0) + image_bytes = image_data.read() + req = oss_upload_image(bucket=AIDA_CLOTHING, object_name=f"mask/mask_{generate_uuid()}.jpg", image_bytes=image_bytes) result['mask_url'] = req.bucket_name + "/" + req.object_name result['back_image'] = None result["back_image_url"] = None