File size: 2,928 Bytes
f0d9a3e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
# API Documentation

## ModelHandler

### `generate(prompt, **kwargs)`

Generate an image from a text prompt.

**Parameters:**
- `prompt` (str): Text prompt for generation
- `negative_prompt` (str, optional): Negative prompt. Default: ""
- `guidance_scale` (float, optional): Guidance scale. Default: 7.5
- `num_inference_steps` (int, optional): Number of inference steps. Default: 50
- `seed` (int, optional): Random seed. Default: None (random)
- `width` (int, optional): Image width. Default: 1024
- `height` (int, optional): Image height. Default: 1024
- `cfg_scale` (float, optional): CFG scale. Default: None (uses guidance_scale)
- `lora_strength` (float, optional): LoRA strength. Default: 1.0

**Returns:**
- `tuple`: (image, metadata_dict)

**Example:**
```python
from src.model_handler import ModelHandler

handler = ModelHandler()
image, metadata = handler.generate(
    prompt="seamless wood texture",
    guidance_scale=7.5,
    num_inference_steps=50,
    seed=12345,
)
```

### `generate_batch(prompts, base_params=None)`

Generate multiple images in batch.

**Parameters:**
- `prompts` (List[str]): List of prompts to generate
- `base_params` (dict, optional): Base parameters for all generations

**Returns:**
- `Generator`: Yields (image, metadata, index) tuples

**Example:**
```python
prompts = ["wood texture", "fabric texture", "metal texture"]
for image, metadata, idx in handler.generate_batch(prompts):
    # Process each image
    pass
```

## Image Processor

### `save_image(image, prompt, params, metadata=None)`

Save an image with metadata.

**Parameters:**
- `image` (PIL.Image): Image to save
- `prompt` (str): Prompt used
- `params` (dict): Generation parameters
- `metadata` (dict, optional): Additional metadata

**Returns:**
- `Path`: Path to saved image file

### `create_thumbnail(image, size=(256, 256))`

Create a thumbnail from an image.

**Parameters:**
- `image` (PIL.Image): Source image
- `size` (tuple): Thumbnail size (width, height)

**Returns:**
- `PIL.Image`: Thumbnail image

### `create_zip(files, output_path)`

Create a ZIP archive from multiple files.

**Parameters:**
- `files` (List[Path]): List of file paths
- `output_path` (Path): Output ZIP path

**Returns:**
- `Path`: Path to created ZIP file

## Presets

### `get_preset(name)`

Get a preset by name.

**Parameters:**
- `name` (str): Preset name

**Returns:**
- `dict` or `None`: Preset dictionary

### `list_presets()`

List all available preset names.

**Returns:**
- `List[str]`: List of preset names

## Utils

### `validate_prompt(prompt, max_length=500)`

Validate a prompt string.

**Parameters:**
- `prompt` (str): Prompt to validate
- `max_length` (int): Maximum allowed length

**Returns:**
- `tuple`: (is_valid, error_message)

### `validate_params(params)`

Validate generation parameters.

**Parameters:**
- `params` (dict): Parameters to validate

**Returns:**
- `tuple`: (is_valid, error_message)