FIX: No garbage in local temp folder

+ VersionUP (beta)
This commit is contained in:
Gourieff 2023-07-29 14:45:54 +07:00
parent c663408f4b
commit fea0eed7c7
4 changed files with 18 additions and 30 deletions

View File

@ -1,4 +1,4 @@
# Roop-GE 0.2.2 for StableDiffusion
# Roop-GE 0.2.3b for StableDiffusion
### NSFW (uncensored) version (use it on your own responsibility) of [original sd-webui-roop](https://github.com/s0md3v/sd-webui-roop) with a lot of improvements
> GE (Gourieff Edition), aka "NSFW-Roop"

View File

@ -12,11 +12,10 @@ import glob
from modules.face_restoration import FaceRestoration
from scripts.roop_logging import logger
from scripts.swapper import UpscaleOptions, swap_face, ImageResult
from scripts.swapper import UpscaleOptions, swap_face
from scripts.roop_version import version_flag
import os
def get_models():
models_path = os.path.join(scripts.basedir(), "models/roop/*")
models = glob.glob(models_path)
@ -191,7 +190,7 @@ class FaceSwapScript(scripts.Script):
model=self.model,
upscale_options=self.upscale_options,
)
p.init_images[i] = result.image()
p.init_images[i] = result
else:
logger.error(f"Please provide a source face")
@ -203,7 +202,7 @@ class FaceSwapScript(scripts.Script):
if self.enable and self.swap_in_generated:
if self.source is not None:
image: Image.Image = script_pp.image
result: ImageResult = swap_face(
result = swap_face(
self.source,
image,
source_faces_index=self.source_faces_index,
@ -211,7 +210,10 @@ class FaceSwapScript(scripts.Script):
model=self.model,
upscale_options=self.upscale_options,
)
pp = scripts_postprocessing.PostprocessedImage(result.image())
pp.info = {}
p.extra_generation_params.update(pp.info)
script_pp.image = pp.image
try:
pp = scripts_postprocessing.PostprocessedImage(result)
pp.info = {}
p.extra_generation_params.update(pp.info)
script_pp.image = pp.image
except:
logger.error(f"Cannot create a result image")

View File

@ -1,4 +1,4 @@
version_flag = "v0.2.2"
version_flag = "v0.2.3b"
from scripts.roop_logging import logger

View File

@ -1,9 +1,7 @@
import copy
import math
import os
import tempfile
from dataclasses import dataclass
from typing import List, Union, Dict, Set, Tuple
from typing import List, Union
import cv2
import numpy as np
@ -12,10 +10,11 @@ from PIL import Image
import insightface
import onnxruntime
from modules.face_restoration import FaceRestoration, restore_faces
from modules.upscaler import Upscaler, UpscalerData
from modules.face_restoration import FaceRestoration
from modules.upscaler import UpscalerData
from scripts.roop_logging import logger
providers = onnxruntime.get_available_providers()
@ -141,17 +140,6 @@ def get_face_single(img_data: np.ndarray, face_index=0, det_size=(640, 640)):
return None
@dataclass
class ImageResult:
path: Union[str, None] = None
similarity: Union[Dict[int, float], None] = None # face, 0..1
def image(self) -> Union[Image.Image, None]:
if self.path:
return Image.open(self.path)
return None
def swap_face(
source_img: Image.Image,
target_img: Image.Image,
@ -159,9 +147,8 @@ def swap_face(
source_faces_index: List[int] = [0],
faces_index: List[int] = [0],
upscale_options: Union[UpscaleOptions, None] = None,
) -> ImageResult:
):
result_image = target_img
fn = tempfile.NamedTemporaryFile(delete=False, suffix=".png")
if model is not None:
if isinstance(source_img, str): # source_img is a base64 string
@ -209,5 +196,4 @@ def swap_face(
else:
logger.info("No source face(s) found")
result_image.save(fn.name)
return ImageResult(path=fn.name)
return result_image