Image Loader Module
The image_loader module provides core functionality for loading and transforming images for GUI applications. It supports both tkinter and customtkinter frameworks with advanced image processing capabilities.
- class gui_image_studio.image_loader.ImageConfig(image_name, framework='tkinter', size=(32, 32), theme='default', grayscale=False, rotate=0, transparency=1.0, format_override=None, animated=False, frame_delay=100, tint_color=None, tint_intensity=0.0, contrast=1.0, saturation=1.0)[source]
Bases:
objectConfiguration class for image processing parameters.
- Parameters:
- gui_image_studio.image_loader.get_image(image_name, framework='tkinter', size=(32, 32), theme='default', grayscale=False, rotate=0, transparency=1.0, format_override=None, animated=False, frame_delay=100, tint_color=None, tint_intensity=0.0, contrast=1.0, saturation=1.0)[source]
Retrieve an embedded image with dynamic transformations and optional animated GIF support.
- Parameters:
image_name (str) – Name of the image file (e.g., ‘icon.png’).
framework (str) – “tkinter” or “customtkinter”.
size (tuple) – Desired dimensions; used for resizing. For animated GIFs, each frame is resized.
theme (str) – Theme name (e.g., “dark”, “light”); falls back to “default” if not matched.
grayscale (bool) – Convert image to grayscale.
rotate (int) – Rotate image (or each frame) by the given degrees.
transparency (float) – Adjust brightness/opacity (0.0 to 1.0).
format_override (str) – Convert image to this format on the fly (“PNG”, “JPEG”, etc.).
animated (bool) – If True and image is an animated GIF, process all its frames.
frame_delay (int) – Delay (milliseconds) between frames for animated GIFs.
tint_color (tuple or None) – A tuple (R, G, B) for a tint overlay.
tint_intensity (float) – Blending factor (0.0 to 1.0) for tint; 0 means no tint.
contrast (float) – Contrast adjustment factor (1.0 means no change).
saturation (float) – Saturation adjustment factor (1.0 means no change).
- Returns:
A Tkinter PhotoImage or a CustomTkinter CTkImage.
- For animated GIFs:
A dictionary with keys “animated_frames” (a list of image objects) and “frame_delay”. Use these frames in an animation loop.
- Return type:
For static images
- gui_image_studio.image_loader.get_image_from_config(config)[source]
Retrieve an embedded image using an ImageConfig object.
This is a convenience function for when you have complex configurations or want to reuse the same configuration multiple times.
- Parameters:
config (ImageConfig) – Complete image processing configuration.
- Returns:
Same as get_image() - framework-specific image object or animated frames dictionary.
- Return type:
Core Functions
get_image
- gui_image_studio.image_loader.get_image(image_name, framework='tkinter', size=(32, 32), theme='default', grayscale=False, rotate=0, transparency=1.0, format_override=None, animated=False, frame_delay=100, tint_color=None, tint_intensity=0.0, contrast=1.0, saturation=1.0)[source]
Retrieve an embedded image with dynamic transformations and optional animated GIF support.
- Parameters:
image_name (str) – Name of the image file (e.g., ‘icon.png’).
framework (str) – “tkinter” or “customtkinter”.
size (tuple) – Desired dimensions; used for resizing. For animated GIFs, each frame is resized.
theme (str) – Theme name (e.g., “dark”, “light”); falls back to “default” if not matched.
grayscale (bool) – Convert image to grayscale.
rotate (int) – Rotate image (or each frame) by the given degrees.
transparency (float) – Adjust brightness/opacity (0.0 to 1.0).
format_override (str) – Convert image to this format on the fly (“PNG”, “JPEG”, etc.).
animated (bool) – If True and image is an animated GIF, process all its frames.
frame_delay (int) – Delay (milliseconds) between frames for animated GIFs.
tint_color (tuple or None) – A tuple (R, G, B) for a tint overlay.
tint_intensity (float) – Blending factor (0.0 to 1.0) for tint; 0 means no tint.
contrast (float) – Contrast adjustment factor (1.0 means no change).
saturation (float) – Saturation adjustment factor (1.0 means no change).
- Returns:
A Tkinter PhotoImage or a CustomTkinter CTkImage.
- For animated GIFs:
A dictionary with keys “animated_frames” (a list of image objects) and “frame_delay”. Use these frames in an animation loop.
- Return type:
For static images
Load and return an image object for the specified GUI framework with optional transformations.
- Parameters:
image_name(str): Name of the embedded image or path to image fileframework(str): GUI framework (“tkinter” or “customtkinter”)size(tuple, optional): Resize image to (width, height), default (32, 32)theme(str, optional): Theme name (“default”, “dark”, “light”), default “default”rotate(int, optional): Rotate image by degrees, default 0grayscale(bool, optional): Convert to grayscale, default Falsetint_color(tuple, optional): Apply color tint as (R, G, B), default Nonetint_intensity(float, optional): Tint blending factor (0.0-1.0), default 0.0contrast(float, optional): Adjust contrast (1.0 = normal), default 1.0saturation(float, optional): Adjust saturation (1.0 = normal), default 1.0transparency(float, optional): Adjust transparency (0.0-1.0), default 1.0animated(bool, optional): Process animated GIFs, default Falseframe_delay(int, optional): Animation frame delay in ms, default 100
- Returns:
Framework-specific image object (PhotoImage for tkinter, CTkImage for customtkinter)
Examples:
from gui_image_studio import get_image
# Basic usage
image = get_image("icon.png", framework="tkinter")
# With transformations
image = get_image(
"photo.jpg",
framework="customtkinter",
size=(200, 200),
tint_color=(255, 0, 0),
tint_intensity=0.3,
rotate=45
)
# Animated GIF
animation = get_image(
"animation.gif",
framework="tkinter",
animated=True,
frame_delay=100
)
save_image
Save images to files in various formats.
- Parameters:
image(PIL.Image.Image): Image to saveoutput_path(str): Path where to save the imagequality(int, optional): JPEG quality (1-100, default 95)optimize(bool, optional): Optimize file size (default True)
Examples:
# Save as PNG
save_image(image, "output.png")
# Save as JPEG with specific quality
save_image(image, "output.jpg", quality=85)
# Save optimized GIF
save_image(animated_image, "output.gif", optimize=True)
Image Processing Functions
resize_image
Resize images while maintaining quality.
- Parameters:
image(PIL.Image.Image): Source imagesize(Tuple[int, int]): Target size (width, height)resample(int, optional): Resampling algorithm (default LANCZOS)maintain_aspect(bool, optional): Maintain aspect ratio (default False)
Examples:
# Resize to exact dimensions
resized = resize_image(image, (800, 600))
# Resize maintaining aspect ratio
resized = resize_image(image, (800, 600), maintain_aspect=True)
apply_tint
Apply color tints to images.
- Parameters:
image(PIL.Image.Image): Source imagecolor(str): Tint color (hex string, RGB tuple, or color name)opacity(float, optional): Tint opacity (0.0-1.0, default 0.3)blend_mode(str, optional): Blending mode (default “multiply”)
Examples:
# Apply red tint
tinted = apply_tint(image, "#FF0000")
# Apply blue tint with custom opacity
tinted = apply_tint(image, "blue", opacity=0.5)
# Apply tint with overlay blend mode
tinted = apply_tint(image, "#00FF00", blend_mode="overlay")
rotate_image
Rotate images by specified angles.
- Parameters:
image(PIL.Image.Image): Source imageangle(float): Rotation angle in degreesexpand(bool, optional): Expand canvas to fit rotated image (default True)fillcolor(str, optional): Background color for empty areas
Examples:
# Rotate 90 degrees clockwise
rotated = rotate_image(image, 90)
# Rotate 45 degrees with white background
rotated = rotate_image(image, 45, fillcolor="white")
flip_image
Flip images horizontally or vertically.
- Parameters:
image(PIL.Image.Image): Source imagehorizontal(bool, optional): Flip horizontally (default False)vertical(bool, optional): Flip vertically (default False)
Examples:
# Flip horizontally
flipped = flip_image(image, horizontal=True)
# Flip vertically
flipped = flip_image(image, vertical=True)
# Flip both ways
flipped = flip_image(image, horizontal=True, vertical=True)
Advanced Functions
apply_filter
Apply various image filters and effects.
- Parameters:
image(PIL.Image.Image): Source imagefilter_type(str): Filter type (“blur”, “sharpen”, “emboss”, etc.)intensity(float, optional): Filter intensity (0.0-1.0, default 1.0)
Examples:
# Apply blur filter
blurred = apply_filter(image, "blur", intensity=0.5)
# Apply sharpen filter
sharpened = apply_filter(image, "sharpen")
adjust_brightness
Adjust image brightness and contrast.
- Parameters:
image(PIL.Image.Image): Source imagebrightness(float, optional): Brightness factor (1.0 = no change)contrast(float, optional): Contrast factor (1.0 = no change)
Examples:
# Increase brightness
brighter = adjust_brightness(image, brightness=1.2)
# Increase contrast
contrasted = adjust_brightness(image, contrast=1.3)
# Adjust both
adjusted = adjust_brightness(image, brightness=1.1, contrast=1.2)
Utility Functions
get_image_info
Get detailed information about an image.
- Parameters:
image(PIL.Image.Image): Image to analyze
- Returns:
dict: Dictionary containing image information
Examples:
info = get_image_info(image)
print(f"Size: {info['size']}")
print(f"Format: {info['format']}")
print(f"Mode: {info['mode']}")
is_animated
Check if an image is animated (e.g., animated GIF).
- Parameters:
image(PIL.Image.Image): Image to check
- Returns:
bool: True if image is animated
Examples:
if is_animated(image):
print("This is an animated image")
else:
print("This is a static image")
Constants
Supported Formats
SUPPORTED_INPUT_FORMATS = ['.png', '.jpg', '.jpeg', '.gif', '.bmp', '.tiff', '.webp', '.ico']
SUPPORTED_OUTPUT_FORMATS = ['.png', '.jpg', '.jpeg', '.gif', '.bmp', '.tiff', '.webp']
Default Settings
DEFAULT_QUALITY = 95
DEFAULT_RESAMPLE = Image.LANCZOS
DEFAULT_TINT_OPACITY = 0.3
Color Constants
TRANSPARENT = (0, 0, 0, 0)
WHITE = (255, 255, 255)
BLACK = (0, 0, 0)
Error Handling
The image_loader module provides comprehensive error handling:
Common Exceptions:
FileNotFoundError: Image file not foundPIL.UnidentifiedImageError: Unsupported image formatValueError: Invalid parameter valuesMemoryError: Image too large to processPermissionError: Insufficient permissions to read/write file
Error Handling Example:
try:
image = get_image("photo.jpg")
processed = apply_tint(image, "#FF0000")
save_image(processed, "output.png")
except FileNotFoundError:
print("Image file not found")
except PIL.UnidentifiedImageError:
print("Unsupported image format")
except Exception as e:
print(f"Unexpected error: {e}")
Performance Notes
- Memory Usage:
Large images consume significant memory. Consider resizing before processing multiple operations.
- Processing Speed:
Complex filters and transformations may take time with large images. Consider showing progress indicators for long operations.
- File I/O:
Loading and saving images involves disk I/O. Cache frequently used images in memory when possible.
- Threading:
Most functions are thread-safe for read operations, but be careful with concurrent write operations.