diff --git a/cli/gen-styles.py b/cli/gen-styles.py
index 1171265a5..8512f4436 100755
--- a/cli/gen-styles.py
+++ b/cli/gen-styles.py
@@ -24,7 +24,7 @@ options = {
styles = []
-def pil_to_b64(img: Image, size: int, quality: int):
+def pil_to_b64(img: Image.Image, size: int, quality: int):
img = img.convert('RGB')
img = img.resize((size, size))
buffer = io.BytesIO()
diff --git a/cli/image-exif.py b/cli/image-exif.py
index fc2573220..e63fd9e71 100755
--- a/cli/image-exif.py
+++ b/cli/image-exif.py
@@ -33,7 +33,7 @@ class Exif: # pylint: disable=single-string-used-for-slots
return self.__dict__[attr]
return self.exif.get(attr, None)
- def load(self, img: Image):
+ def load(self, img: Image.Image):
img.load() # exif may not be ready
exif_dict = {}
try:
diff --git a/cli/process.py b/cli/process.py
index dcb4278d9..ef205c141 100644
--- a/cli/process.py
+++ b/cli/process.py
@@ -35,7 +35,7 @@ class Result():
self.steps = requested
-def detect_blur(image: Image):
+def detect_blur(image: Image.Image):
# based on
bw = ImageOps.grayscale(image)
cx, cy = image.size[0] // 2, image.size[1] // 2
@@ -49,7 +49,7 @@ def detect_blur(image: Image):
return mean
-def detect_dynamicrange(image: Image):
+def detect_dynamicrange(image: Image.Image):
# based on
data = np.asarray(image)
image = np.float32(data)
@@ -68,7 +68,7 @@ def detect_dynamicrange(image: Image):
return round(res, 2)
-def detect_simmilar(image: Image):
+def detect_simmilar(image: Image.Image):
img = image.resize((options.process.similarity_size, options.process.similarity_size))
img = ImageOps.grayscale(img)
data = np.array(img)
diff --git a/modules/control/proc/marigold/__init__.py b/modules/control/proc/marigold/__init__.py
index af29be777..3fb7f6f52 100644
--- a/modules/control/proc/marigold/__init__.py
+++ b/modules/control/proc/marigold/__init__.py
@@ -21,7 +21,7 @@ class MarigoldDetector:
def __call__(
self,
- input_image: Image,
+ input_image: Image.Image,
denoising_steps: int = 10,
ensemble_size: int = 10,
processing_res: int = 768,
diff --git a/modules/control/proc/marigold/marigold_pipeline.py b/modules/control/proc/marigold/marigold_pipeline.py
index ac60f833e..768c67684 100644
--- a/modules/control/proc/marigold/marigold_pipeline.py
+++ b/modules/control/proc/marigold/marigold_pipeline.py
@@ -105,7 +105,7 @@ class MarigoldPipeline(DiffusionPipeline):
@torch.no_grad()
def __call__(
self,
- input_image: Image,
+ input_image: Image.Image,
denoising_steps: int = 10,
ensemble_size: int = 10,
processing_res: int = 768,
diff --git a/modules/control/processors.py b/modules/control/processors.py
index 7a0f5a1fd..bdf5e53c7 100644
--- a/modules/control/processors.py
+++ b/modules/control/processors.py
@@ -304,7 +304,7 @@ class Processor:
display(e, 'Control Processor load')
return f'Processor load filed: {processor_id}'
- def __call__(self, image_input: Image, mode: str = 'RGB', width: int = 0, height: int = 0, resize_mode: int = 0, resize_name: str = 'None', scale_tab: int = 1, scale_by: float = 1.0, local_config: dict | None = None):
+ def __call__(self, image_input: Image.Image, mode: str = 'RGB', width: int = 0, height: int = 0, resize_mode: int = 0, resize_name: str = 'None', scale_tab: int = 1, scale_by: float = 1.0, local_config: dict | None = None):
"""Run the preprocessor on an input image and return the processed control map.
Args:
diff --git a/modules/gr_tempdir.py b/modules/gr_tempdir.py
index 691933e87..4cbba49c0 100644
--- a/modules/gr_tempdir.py
+++ b/modules/gr_tempdir.py
@@ -49,7 +49,7 @@ def check_tmp_file(gradio, filename):
return ok
-def pil_to_temp_file(self, img: Image, dir: str, format="png") -> str: # pylint: disable=redefined-builtin,unused-argument
+def pil_to_temp_file(self, img: Image.Image, dir: str, format="png") -> str: # pylint: disable=redefined-builtin,unused-argument
"""
# original gradio implementation
bytes_data = gr.processing_utils.encode_pil_to_bytes(img, format)
diff --git a/modules/masking.py b/modules/masking.py
index 600ec87f2..9cd70c5a5 100644
--- a/modules/masking.py
+++ b/modules/masking.py
@@ -257,7 +257,7 @@ def run_segment(input_image: gr.Image, input_mask: np.ndarray):
return combined_mask
-def run_rembg(input_image: Image, input_mask: np.ndarray):
+def run_rembg(input_image: Image.Image, input_mask: np.ndarray):
try:
import rembg
except Exception as e:
diff --git a/modules/processing_helpers.py b/modules/processing_helpers.py
index f93bcea89..7e4b1a4c6 100644
--- a/modules/processing_helpers.py
+++ b/modules/processing_helpers.py
@@ -106,7 +106,7 @@ def apply_color_correction(correction, original_image, method='histogram'):
return fn(correction, original_image)
-def apply_overlay(image: Image, paste_loc, index, overlays):
+def apply_overlay(image: Image.Image, paste_loc, index, overlays):
if overlays is None or index >= len(overlays):
return image
debug(f'Apply overlay: image={image} loc={paste_loc} index={index} overlays={overlays}')
diff --git a/modules/seedvr/src/utils/color_fix.py b/modules/seedvr/src/utils/color_fix.py
index a8b0da509..efe80b67d 100644
--- a/modules/seedvr/src/utils/color_fix.py
+++ b/modules/seedvr/src/utils/color_fix.py
@@ -5,7 +5,7 @@ from torch.nn import functional as F
from ..common.half_precision_fixes import safe_pad_operation, safe_interpolate_operation
from torchvision.transforms import ToTensor, ToPILImage
-def adain_color_fix(target: Image, source: Image):
+def adain_color_fix(target: Image.Image, source: Image.Image):
# Convert images to tensors
to_tensor = ToTensor()
target_tensor = to_tensor(target).unsqueeze(0)
@@ -20,7 +20,7 @@ def adain_color_fix(target: Image, source: Image):
return result_image
-def wavelet_color_fix(target: Image, source: Image):
+def wavelet_color_fix(target: Image.Image, source: Image.Image):
# Convert images to tensors
to_tensor = ToTensor()
target_tensor = to_tensor(target).unsqueeze(0)
diff --git a/modules/upscaler_algo.py b/modules/upscaler_algo.py
index e5df5611e..8b3d54ef9 100644
--- a/modules/upscaler_algo.py
+++ b/modules/upscaler_algo.py
@@ -13,7 +13,7 @@ class UpscalerDCC(Upscaler):
UpscalerData("DCC Interpolation", None, self),
]
- def do_upscale(self, img: Image, selected_model=None):
+ def do_upscale(self, img: Image.Image, selected_model=None):
import math
import numpy as np
from modules.postprocess.dcc import DCC
@@ -41,7 +41,7 @@ class UpscalerVIPS(Upscaler):
UpscalerData("VIPS MagicKernelSharp 2021", None, self),
]
- def do_upscale(self, img: Image, selected_model=None):
+ def do_upscale(self, img: Image.Image, selected_model=None):
if selected_model is None:
return img
from installer import install
@@ -85,7 +85,7 @@ class UpscalerHQX(Upscaler):
UpscalerData("HQX Interpolation", None, self),
]
- def do_upscale(self, img: Image, selected_model=None):
+ def do_upscale(self, img: Image.Image, selected_model=None):
import numpy as np
from modules.postprocess.hqx import hqx
t0 = time.time()
@@ -106,7 +106,7 @@ class UpscalerICBI(Upscaler):
UpscalerData("ICB Interpolation", None, self),
]
- def do_upscale(self, img: Image, selected_model=None):
+ def do_upscale(self, img: Image.Image, selected_model=None):
import numpy as np
from modules.postprocess.icbi import icbi
t0 = time.time()
diff --git a/modules/upscaler_simple.py b/modules/upscaler_simple.py
index fbef4be6c..1ee384fdf 100644
--- a/modules/upscaler_simple.py
+++ b/modules/upscaler_simple.py
@@ -31,7 +31,7 @@ class UpscalerResize(Upscaler):
UpscalerData("Resize Sharpfin Lanczos3", None, self),
]
- def do_upscale(self, img: Image, selected_model=None):
+ def do_upscale(self, img: Image.Image, selected_model=None):
if selected_model is None:
return img
elif selected_model == "Resize Nearest":
@@ -74,7 +74,7 @@ class UpscalerLatent(Upscaler):
UpscalerData("Latent Bicubic antialias", None, self),
]
- def do_upscale(self, img: Image, selected_model=None):
+ def do_upscale(self, img: Image.Image, selected_model=None):
import torch
import torch.nn.functional as F
if isinstance(img, torch.Tensor) and (len(img.shape) == 4):
diff --git a/modules/upscaler_spandrel.py b/modules/upscaler_spandrel.py
index e8f95ec1c..f1974edce 100644
--- a/modules/upscaler_spandrel.py
+++ b/modules/upscaler_spandrel.py
@@ -37,7 +37,7 @@ class UpscalerSpandrel(Upscaler):
log.debug(f'Upscale: name="{self.selected}" input={img.size} output={upscaled.size} time={t1 - t0:.2f}')
return upscaled
- def do_upscale(self, img: Image, selected_model=None):
+ def do_upscale(self, img: Image.Image, selected_model=None):
from installer import install
if selected_model is None:
return img
diff --git a/modules/upscaler_vae.py b/modules/upscaler_vae.py
index 6869535cf..a0318302f 100644
--- a/modules/upscaler_vae.py
+++ b/modules/upscaler_vae.py
@@ -15,7 +15,7 @@ class UpscalerAsymmetricVAE(Upscaler):
UpscalerData("Asymmetric VAE v2", None, self),
]
- def do_upscale(self, img: Image, selected_model=None):
+ def do_upscale(self, img: Image.Image, selected_model=None):
if selected_model is None:
return img
import diffusers
@@ -55,7 +55,7 @@ class UpscalerWanUpscale(Upscaler):
UpscalerData("WAN Asymmetric Upscale", None, self),
]
- def do_upscale(self, img: Image, selected_model=None):
+ def do_upscale(self, img: Image.Image, selected_model=None):
if selected_model is None:
return img
import torch.nn.functional as FN
diff --git a/scripts/daam/trace.py b/scripts/daam/trace.py
index 625e3d402..c748826df 100644
--- a/scripts/daam/trace.py
+++ b/scripts/daam/trace.py
@@ -34,7 +34,7 @@ class DiffusionHeatMapHooker(AggregateHooker):
locate_middle = load_heads or save_heads
self.locator = UNetCrossAttentionLocator(restrict={0} if low_memory else None, locate_middle_block=locate_middle)
self.last_prompt: str = ''
- self.last_image: Image = None
+ self.last_image: Image.Image = None
self.time_idx = 0
self._gen_idx = 0