Merge pull request #4740 from awsr/image-type-fix

(minor) PIL Image.Image type fix
This commit is contained in:
Vladimir Mandic
2026-04-06 17:01:56 +02:00
committed by GitHub
15 changed files with 23 additions and 23 deletions
+1 -1
View File
@@ -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()
+1 -1
View File
@@ -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:
+3 -3
View File
@@ -35,7 +35,7 @@ class Result():
self.steps = requested
def detect_blur(image: Image):
def detect_blur(image: Image.Image):
# based on <https://github.com/karthik9319/Blur-Detection/>
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 <https://towardsdatascience.com/measuring-enhancing-image-quality-attributes-234b0f250e10>
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)
+1 -1
View File
@@ -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,
@@ -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,
+1 -1
View File
@@ -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:
+1 -1
View File
@@ -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)
+1 -1
View File
@@ -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:
+1 -1
View File
@@ -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}')
+2 -2
View File
@@ -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)
+4 -4
View File
@@ -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()
+2 -2
View File
@@ -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):
+1 -1
View File
@@ -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
+2 -2
View File
@@ -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
+1 -1
View File
@@ -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