color_tools.image.conversion
Image format conversion utilities.
Provides simple, high-quality image format conversion with sensible defaults for lossless and lossy formats.
- color_tools.image.conversion.convert_image(input_path, output_path=None, output_format=None, quality=None, lossless=None)[source]
Convert an image from one format to another with sensible quality defaults.
- Parameters:
output_path (
str|Path|None) – Path for output file. If None, auto-generates from input_path using output_format extensionoutput_format (
str|None) – Output format (png, jpg, webp, etc.). Case-insensitive. If None, defaults to PNG. If output_path is provided with extension, infers from that.quality (
int|None) – JPEG/WebP quality (1-100). If None, uses format-specific defaults: - JPEG: 67 (Photoshop quality 8/12 equivalent) - WebP: Lossless by default (no quality needed) - AVIF: 80 for lossy compressionlossless (
bool|None) – Force lossless compression for formats that support it (WebP, AVIF). If None, WebP uses lossless by default.
- Return type:
- Returns:
Path object pointing to the created output file
- Raises:
FileNotFoundError – If input file doesn’t exist
ValueError – If output format is not supported
ImportError – If pillow-heif not installed for HEIC files
Examples
>>> # WebP to PNG (lossless) >>> convert_image("photo.webp") # Creates photo.png
>>> # JPEG to WebP (lossless) >>> convert_image("photo.jpg", output_format="webp") # Creates photo.webp
>>> # Custom output path >>> convert_image("input.webp", "output.png")
>>> # JPEG with custom quality >>> convert_image("photo.png", output_format="jpg", quality=85)
>>> # WebP with lossy compression >>> convert_image("photo.png", output_format="webp", lossless=False, quality=80)
- color_tools.image.conversion.get_supported_formats()[source]
Get lists of supported input and output formats.
- Return type:
- Returns:
Dictionary with ‘input’ and ‘output’ keys containing lists of format strings
Examples
>>> formats = get_supported_formats() >>> print("Input formats:", formats['input']) >>> print("Output formats:", formats['output'])