"""Prepare Android screenshots for model input without changing device coordinates.""" from io import BytesIO from PIL import Image def limit_screenshot_long_edge(image_bytes: bytes, max_long_edge: int) -> bytes: """Downscale oversized screenshots; keep smaller images byte-for-byte unchanged.""" try: with Image.open(BytesIO(image_bytes)) as image: long_edge = max(image.size) if long_edge <= max_long_edge: return image_bytes scale = max_long_edge / long_edge size = tuple(max(1, round(side * scale)) for side in image.size) resized = image.convert("RGB").resize(size, Image.Resampling.LANCZOS) output = BytesIO() resized.save(output, format="JPEG", quality=80, optimize=True) return output.getvalue() except OSError: # Preserve the capture path's previous behavior for invalid placeholder images. return image_bytes