Leffa / utils /utils.py
franciszzj's picture
update app.py
24e151d
raw
history blame
1.12 kB
from PIL import Image
def resize_and_center(image, target_width, target_height, fill_color=(255, 255, 255)):
"""
Resize the image to fit within (target_width, target_height) while maintaining aspect ratio,
and center it with padding to match the exact target size.
Parameters:
- image: PIL.Image object
- target_width: Desired width of the final image
- target_height: Desired height of the final image
- fill_color: Background color used for padding
Returns:
- A resized and centered PIL.Image object
"""
# Resize the image while maintaining the aspect ratio
image.thumbnail((target_width, target_height), Image.Resampling.LANCZOS)
# Create a new image with the desired size and fill color
new_image = Image.new("RGB", (target_width, target_height), fill_color)
# Calculate the position to center the resized image
x_offset = (target_width - image.width) // 2
y_offset = (target_height - image.height) // 2
# Paste the resized image onto the new image with padding
new_image.paste(image, (x_offset, y_offset))
return new_image