diff options
Diffstat (limited to 'modules/upscaler.py')
-rw-r--r-- | modules/upscaler.py | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/modules/upscaler.py b/modules/upscaler.py index 83fde7ca..231680cb 100644 --- a/modules/upscaler.py +++ b/modules/upscaler.py @@ -53,14 +53,22 @@ class Upscaler: def do_upscale(self, img: PIL.Image, selected_model: str): return img - def upscale(self, img: PIL.Image, scale: int, selected_model: str = None): + def upscale(self, img: PIL.Image, scale, selected_model: str = None): self.scale = scale - dest_w = img.width * scale - dest_h = img.height * scale + dest_w = int(img.width * scale) + dest_h = int(img.height * scale) + for i in range(3): - if img.width > dest_w and img.height > dest_h: - break + shape = (img.width, img.height) + img = self.do_upscale(img, selected_model) + + if shape == (img.width, img.height): + break + + if img.width >= dest_w and img.height >= dest_h: + break + if img.width != dest_w or img.height != dest_h: img = img.resize((int(dest_w), int(dest_h)), resample=LANCZOS) |