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:
objectGenerate 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']