diff --git a/image.py b/image.py index 0823d5f..7fd556f 100644 --- a/image.py +++ b/image.py @@ -180,18 +180,29 @@ class LoadImageFromPathEnhanced(LoadImageFromPath): def load_image_enhanced(self, image): # Get the full path image_path = LoadImageFromPath._resolve_path(image) + + i = Image.open(image_path) + i = ImageOps.exif_transpose(i) + image_tensor = i.convert("RGB") + image_tensor = np.array(image_tensor).astype(np.float32) / 255.0 + image_tensor = torch.from_numpy(image_tensor)[None,] # (1, H, W, 3) - # Call the parent class's load_image method - image_tensor, mask = super().load_image(image) + if 'A' in i.getbands(): + mask = np.array(i.getchannel('A')).astype(np.float32) / 255.0 + mask = 1. - torch.from_numpy(mask) + # Add batch dimension to match ComfyUI standard + mask = mask.unsqueeze(0) # (H, W) -> (1, H, W) + else: + # Add batch dimension here too + mask = torch.zeros((1, 64, 64), dtype=torch.float32, device="cpu") # Register this image in our cache for mask editor support filename = os.path.basename(str(image_path)) _image_path_cache[filename] = str(image_path) _image_path_cache[str(image_path)] = str(image_path) - # Return image, mask, AND the original input path string return (image_tensor, mask, image) - + # Middleware to handle clipspace file resolution @web.middleware async def clipspace_resolver_middleware(request, handler): @@ -373,4 +384,4 @@ async def serve_image(request): return response except Exception as e: - return web.Response(status=500, text=f'Error serving image: {str(e)}') \ No newline at end of file + return web.Response(status=500, text=f'Error serving image: {str(e)}')