from PIL import Image
from typing import Tuple


# Applies a centered watermark to the given image using a transparent overlay
def add_watermark(
        image: Image.Image,
        watermark_path: str = "logo.png") -> Image.Image:
    watermark = Image.open(watermark_path).convert("RGBA")
    image = image.convert("RGBA")

    watermark.thumbnail((image.width // 2, image.height // 2), Image.LANCZOS)

    position = (
        (image.width - watermark.width) // 2,
        (image.height - watermark.height) // 2
    )

    image_with_watermark = image.copy()
    image_with_watermark.paste(watermark, position, watermark)

    return image_with_watermark.convert("RGB")


# Resizes the image to fit within the given max dimensions while
# maintaining aspect ratio
def resize_image(image: Image.Image, max_size: Tuple[int, int]) -> Image.Image:
    image_copy = image.copy()
    image_copy.thumbnail(max_size, Image.LANCZOS)
    return image_copy


# Saves the image to the given path in JPEG format
def save_image(image: Image.Image, path: str) -> None:
    image.save(path, format="JPEG")

def prepare_for_saving_as_jpg(image: Image.Image) -> Image.Image:
    if image.mode != 'RGB':
        image = image.convert('RGB')
    return image