From e09f42bb1865cae72c33cc0360f3e8ef5a48324e Mon Sep 17 00:00:00 2001 From: "Lt.Dr.Data" Date: Fri, 21 Apr 2023 15:18:06 +0900 Subject: [PATCH] wip --- server.py | 43 ++++++++++++++++++++++++++++++++ web/extensions/core/clipspace.js | 1 + 2 files changed, 44 insertions(+) diff --git a/server.py b/server.py index 1c5c17916..1267938b9 100644 --- a/server.py +++ b/server.py @@ -7,6 +7,8 @@ import execution import uuid import json import glob +from PIL import Image + try: import aiohttp from aiohttp import web @@ -147,6 +149,47 @@ class PromptServer(): else: return web.Response(status=400) + @routes.post("/upload/mask") + async def upload_mask(request): + post = await request.post() + image = post.get("image") + original_image = post.get("original_image") + + if post.get("type") is None: + upload_dir = folder_paths.get_input_directory() + elif post.get("type") == "input": + upload_dir = folder_paths.get_input_directory() + elif post.get("type") == "temp": + upload_dir = folder_paths.get_temp_directory() + elif post.get("type") == "output": + upload_dir = folder_paths.get_output_directory() + + if not os.path.exists(upload_dir): + os.makedirs(upload_dir) + + if image and image.file: + filename = image.filename + if not filename: + return web.Response(status=400) + + split = os.path.splitext(filename) + i = 1 + while os.path.exists(os.path.join(upload_dir, filename)): + filename = f"{split[0]} ({i}){split[1]}" + i += 1 + + filepath = os.path.join(upload_dir, filename) + + original_pil = Image.open(original_image) + mask_pil = Image.open(image.file) + alpha_channel = mask_pil.getchannel('A') + original_pil.putalpha(alpha_channel, (0, 0)) + original_pil.save(filepath) + + return web.json_response({"name": filename}) + else: + return web.Response(status=400) + @routes.get("/view") async def view_image(request): diff --git a/web/extensions/core/clipspace.js b/web/extensions/core/clipspace.js index a9da9dbd5..330d43bde 100644 --- a/web/extensions/core/clipspace.js +++ b/web/extensions/core/clipspace.js @@ -117,6 +117,7 @@ class ClipspaceDialog extends ComfyDialog { } formData.append('image', blob, filename); + formData.append('original-imagepath', ComfyApp.clipspace.); formData.append('type', "temp"); invalidateImage(item, formData); this.close();