62 lines
1.6 KiB
Python
Executable File
62 lines
1.6 KiB
Python
Executable File
import os
|
|
from PIL import Image
|
|
|
|
|
|
def is_valid_image_path(image_path):
|
|
"""
|
|
Checks if the image path is valid.
|
|
|
|
Args:
|
|
image_path: The path to the image.
|
|
|
|
Returns:
|
|
bool: True if the path is valid, False otherwise.
|
|
"""
|
|
if not os.path.exists(image_path):
|
|
return False
|
|
|
|
# Check if the file extension is one of the common image formats.
|
|
image_extensions = ['.jpg', '.jpeg', '.png', '.gif', '.bmp']
|
|
_, extension = os.path.splitext(image_path)
|
|
if extension.lower() in image_extensions:
|
|
return True
|
|
else:
|
|
return False
|
|
|
|
|
|
def read_image(image_path, use_native=False):
|
|
"""
|
|
Reads an image and resizes it while maintaining aspect ratio.
|
|
|
|
Args:
|
|
image_path: The path to the image.
|
|
use_native: If True, the max dimension of the original image is used as the max size.
|
|
If False, max size is set to 1024.
|
|
|
|
Returns:
|
|
tuple: (resized_image, original_width, original_height)
|
|
"""
|
|
# Create a default 512x512 blue image as a fallback.
|
|
image = Image.new('RGB', (512, 512), color=(0, 0, 255))
|
|
|
|
if is_valid_image_path(image_path):
|
|
image = Image.open(image_path)
|
|
else:
|
|
raise FileNotFoundError(f"{image_path}: Image path does not exist")
|
|
|
|
w, h = image.size
|
|
if use_native:
|
|
max_size = max(w, h)
|
|
else:
|
|
max_size = 1024
|
|
|
|
if w > h:
|
|
new_w = max_size
|
|
new_h = int(h * max_size / w)
|
|
else:
|
|
new_h = max_size
|
|
new_w = int(w * max_size / h)
|
|
|
|
image = image.resize((new_w, new_h))
|
|
return image, w, h
|