Spaces:
Runtime error
Runtime error
| """ | |
| Image preprocessing utilities. | |
| """ | |
| from typing import Tuple | |
| import numpy as np | |
| from PIL import Image | |
| def resize_if_needed(image: Image.Image, max_dim: int = 4096) -> Image.Image: | |
| """Resize image if either dimension exceeds max_dim, preserving aspect ratio.""" | |
| w, h = image.size | |
| if max(w, h) <= max_dim: | |
| return image | |
| scale = max_dim / max(w, h) | |
| new_w = int(w * scale) | |
| new_h = int(h * scale) | |
| return image.resize((new_w, new_h), Image.LANCZOS) | |
| def pad_to_square(image: Image.Image) -> Image.Image: | |
| """Pad image to square with black borders (useful for YOLO input).""" | |
| w, h = image.size | |
| if w == h: | |
| return image | |
| size = max(w, h) | |
| padded = Image.new("RGB", (size, size), (0, 0, 0)) | |
| padded.paste(image, ((size - w) // 2, (size - h) // 2)) | |
| return padded | |
| def get_image_info(image: Image.Image) -> dict: | |
| """Get basic image metadata.""" | |
| return { | |
| "width": image.size[0], | |
| "height": image.size[1], | |
| "mode": image.mode, | |
| "format": getattr(image, "format", None), | |
| } | |