"""
gen_thumb.py <src_path> <dest_path> [size]
Resizes the image to fit entirely within a square canvas (object-fit: contain).
The full image is preserved; empty space is padded with white.
"""
import sys
from PIL import Image

src  = sys.argv[1]
dest = sys.argv[2]
size = int(sys.argv[3]) if len(sys.argv) > 3 else 300

img = Image.open(src).convert('RGB')

# Scale down to fit inside size×size, preserving aspect ratio
img.thumbnail((size, size), Image.LANCZOS)

# Create white square canvas and paste centered
canvas = Image.new('RGB', (size, size), (255, 255, 255))
x = (size - img.width)  // 2
y = (size - img.height) // 2
canvas.paste(img, (x, y))
canvas.save(dest, quality=85, optimize=True)
print(dest)
