diff --git a/lama_cleaner/server.py b/lama_cleaner/server.py index 68d63e0..8fa9f82 100644 --- a/lama_cleaner/server.py +++ b/lama_cleaner/server.py @@ -148,9 +148,10 @@ def save_image(): input = request.files filename = request.form["filename"] origin_image_bytes = input["image"].read() # RGB - ext = get_image_ext(origin_image_bytes) + # ext = get_image_ext(origin_image_bytes) + ext = "png" image, alpha_channel, exif_infos = load_img(origin_image_bytes, return_exif=True) - save_path = str(global_config.output_dir / filename) + save_path = (global_config.output_dir / filename).with_suffix(f".{ext}") if alpha_channel is not None: if alpha_channel.shape[:2] != image.shape[:2]: @@ -159,7 +160,7 @@ def save_image(): ) image = np.concatenate((image, alpha_channel[:, :, np.newaxis]), axis=-1) - pil_image = Image.fromarray(image) + pil_image = Image.fromarray(image).convert("RGBA") img_bytes = pil_to_bytes( pil_image, @@ -167,8 +168,11 @@ def save_image(): quality=global_config.image_quality, exif_infos=exif_infos, ) - with open(save_path, "wb") as fw: - fw.write(img_bytes) + try: + with open(save_path, "wb") as fw: + fw.write(img_bytes) + except: + return f"Save image failed: {traceback.format_exc()}", 500 return "ok", 200 @@ -551,6 +555,9 @@ def start( if output_dir: output_dir = output_dir.expanduser().absolute() logger.info(f"Image will auto save to output dir: {output_dir}") + if not output_dir.exists(): + logger.info(f"Create output dir: {output_dir}") + output_dir.mkdir(parents=True) global_config.output_dir = output_dir global_config.model_manager = ModelManager( diff --git a/web_app/src/components/Editor.tsx b/web_app/src/components/Editor.tsx index 50f256c..225d0f0 100644 --- a/web_app/src/components/Editor.tsx +++ b/web_app/src/components/Editor.tsx @@ -501,13 +501,17 @@ export default function Editor(props: EditorProps) { } ) - function download() { + const download = async () => { if (file === undefined) { return } if (enableAutoSaving && renders.length > 0) { try { - downloadToOutput(renders[renders.length - 1], file.name, file.type) + await downloadToOutput( + renders[renders.length - 1], + file.name, + file.type + ) toast({ description: "Save image success", }) diff --git a/web_app/src/lib/api.ts b/web_app/src/lib/api.ts index 0359eb3..02db905 100644 --- a/web_app/src/lib/api.ts +++ b/web_app/src/lib/api.ts @@ -81,7 +81,7 @@ export default async function inpaint( "controlnet_conditioning_scale", settings.controlnetConditioningScale.toString() ) - fd.append("controlnet_method", settings.controlnetMethod.toString()) + fd.append("controlnet_method", settings.controlnetMethod?.toString()) // PowerPaint if (settings.showExtender) { @@ -213,6 +213,7 @@ export async function downloadToOutput( method: "POST", body: fd, }) + console.log(res.ok) if (!res.ok) { const errMsg = await res.text() throw new Error(errMsg)