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 ### 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" > GE (Gourieff Edition), aka "NSFW-Roop"

View File

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

View File

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