image-eval / utils /image_processing.py
VOIDER's picture
Upload 11 files
f89e218 verified
"""
Utility functions for image processing and data handling.
"""
import os
import shutil
import tempfile
from PIL import Image
import numpy as np
def create_thumbnail(image_path, max_size=(200, 200)):
"""
Create a thumbnail of an image.
Args:
image_path: path to the image file
max_size: maximum size of the thumbnail as (width, height)
Returns:
PIL.Image: thumbnail image
"""
try:
image = Image.open(image_path)
image.thumbnail(max_size)
return image
except Exception as e:
print(f"Error creating thumbnail for {image_path}: {e}")
return None
def create_temp_directory():
"""
Create a temporary directory for storing intermediate files.
Returns:
str: path to the temporary directory
"""
temp_dir = tempfile.mkdtemp(prefix="image_evaluator_")
return temp_dir
def cleanup_temp_directory(temp_dir):
"""
Clean up a temporary directory.
Args:
temp_dir: path to the temporary directory
"""
if os.path.exists(temp_dir):
shutil.rmtree(temp_dir)
def ensure_directory(directory):
"""
Ensure that a directory exists, creating it if necessary.
Args:
directory: path to the directory
Returns:
str: path to the directory
"""
os.makedirs(directory, exist_ok=True)
return directory
def is_valid_image(file_path):
"""
Check if a file is a valid image.
Args:
file_path: path to the file
Returns:
bool: True if the file is a valid image, False otherwise
"""
try:
with Image.open(file_path) as img:
img.verify()
return True
except:
return False
def convert_to_rgb(image_path):
"""
Convert an image to RGB mode if necessary.
Args:
image_path: path to the image file
Returns:
numpy.ndarray: RGB image array
"""
try:
image = Image.open(image_path)
if image.mode != 'RGB':
image = image.convert('RGB')
return np.array(image)
except Exception as e:
print(f"Error converting image to RGB: {e}")
return None