renoir.color.prompt

Generative AI colour prompt module.

Converts renoir colour analysis results into structured prompts for generative AI image and video models (DALL-E, Midjourney, Stable Diffusion, Runway, Sora). Bridges the gap between computational colour analysis and AI-assisted design workflows.

class renoir.color.prompt.PromptGenerator(vocabulary='artist')[source]

Bases: object

Generate structured colour prompts for generative AI models.

Composes outputs from renoir’s colour analysis, naming, and harmony detection into descriptive prompt strings that can be used with image/video generation APIs.

Example

>>> from renoir.color import ColorExtractor, PromptGenerator
>>> from PIL import Image
>>> extractor = ColorExtractor()
>>> img = Image.open('artwork.jpg')
>>> colors = extractor.extract_dominant_colors(img, n_colors=5)
>>> gen = PromptGenerator()
>>> prompt = gen.generate(colors)
>>> print(prompt)
generate(colors, proportions=None, style=None, medium=None, mood=None, subject=None, include_harmony=True, include_temperature=True, include_complexity=True, target_model='generic')[source]

Generate a structured colour prompt from a palette.

Parameters:
  • colors (List[Tuple[int, int, int]]) – List of RGB tuples (typically from ColorExtractor).

  • proportions (Optional[List[float]]) – Optional colour proportions (should sum to 1.0). If None, equal proportions are assumed.

  • style (Optional[str]) – Optional art style descriptor (e.g. ‘impressionist’, ‘minimalist’, ‘art deco’).

  • medium (Optional[str]) – Optional medium descriptor (e.g. ‘oil painting’, ‘watercolour’, ‘digital illustration’).

  • mood (Optional[str]) – Optional mood descriptor (e.g. ‘serene’, ‘dramatic’).

  • subject (Optional[str]) – Optional subject descriptor (e.g. ‘landscape’, ‘portrait’, ‘abstract composition’).

  • include_harmony (bool) – Include harmony analysis in prompt (default: True).

  • include_temperature (bool) – Include warm/cool distribution (default: True).

  • include_complexity (bool) – Include CCI score description (default: True).

  • target_model (str) – Target model hint — ‘generic’, ‘midjourney’, ‘dalle’, ‘stable_diffusion’ (default: ‘generic’).

Return type:

str

Returns:

Structured prompt string.

Example

>>> gen = PromptGenerator()
>>> colors = [(255, 87, 51), (0, 50, 200), (255, 255, 240)]
>>> prompt = gen.generate(colors, style='impressionist',
...                       medium='oil painting')
>>> print(prompt)
generate_variation_prompts(colors, n_variations=3, **kwargs)[source]

Generate multiple prompt variations from a single palette.

Creates variations by rotating emphasis across palette colours and varying descriptors.

Parameters:
  • colors (List[Tuple[int, int, int]]) – List of RGB tuples.

  • n_variations (int) – Number of variations to generate (default: 3).

  • **kwargs – Additional arguments passed to generate().

Return type:

List[str]

Returns:

List of prompt strings.

Example

>>> gen = PromptGenerator()
>>> colors = [(255, 0, 0), (0, 0, 255), (255, 255, 0)]
>>> prompts = gen.generate_variation_prompts(colors, n_variations=3)
>>> for i, p in enumerate(prompts):
...     print(f"Variation {i+1}: {p[:80]}...")
palette_to_prompt_keywords(colors)[source]

Extract concise keyword descriptors from a palette.

Useful for tagging or short-form prompts.

Parameters:

colors (List[Tuple[int, int, int]]) – List of RGB tuples.

Return type:

List[str]

Returns:

List of keyword strings.

Example

>>> gen = PromptGenerator()
>>> keywords = gen.palette_to_prompt_keywords([(255, 0, 0), (0, 0, 255)])
>>> print(keywords)
['Cadmium Red Light', 'Prussian Blue', 'complementary', 'warm-cool contrast']