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:
  • input_path (str | Path) – Path to input image file

  • output_path (str | Path | None) – Path for output file. If None, auto-generates from input_path using output_format extension

  • output_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 compression

  • lossless (bool | None) – Force lossless compression for formats that support it (WebP, AVIF). If None, WebP uses lossless by default.

Return type:

Path

Returns:

Path object pointing to the created output file

Raises:

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:

dict[str, list[str]]

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'])