initial commit for Styles

This commit is contained in:
KJS
2023-08-31 15:52:28 -05:00
parent 7b564811ad
commit 5b05e493dd
22 changed files with 29148 additions and 0 deletions
+1
View File
@@ -0,0 +1 @@
__pycache__/
+21
View File
@@ -0,0 +1,21 @@
MIT License
Copyright (c) 2023 twri
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
+64
View File
@@ -0,0 +1,64 @@
SDXL Prompt Styler
=======
Custom node for ComfyUI
-----------
![SDXL Prompt Styler Screenshot](examples/sdxl_prompt_styler.png)
SDXL Prompt Styler is a node that enables you to style prompts based on predefined templates stored in a JSON file. The node specifically replaces a {prompt} placeholder in the 'prompt' field of each template with provided positive text.
The node also effectively manages negative prompts. If negative text is provided, the node combines this with the 'negative_prompt' field from the template. If no negative text is supplied, the system defaults to using the 'negative_prompt' from the JSON template. This flexibility enables the creation of a diverse and specific range of negative prompts.
### Usage Example with SDXL Prompt Styler
Template example from a JSON file:
```json
[
{
"name": "base",
"prompt": "{prompt}",
"negative_prompt": ""
},
{
"name": "enhance",
"prompt": "breathtaking {prompt} . award-winning, professional, highly detailed",
"negative_prompt": "ugly, deformed, noisy, blurry, distorted, grainy"
}
]
```
```python
style = "enhance"
positive_prompt = "a futuristic pop up tent in a forest"
negative_prompt = "dark"
```
This will generate the following styled prompts as outputs:
```
breathtaking a futuristic pop up tent in a forest . award-winning, professional, highly detailed
ugly, deformed, noisy, blurry, distorted, grainy, dark
```
### Installation
To install and use the SDXL Prompt Styler nodes, follow these steps:
1. Open a terminal or command line interface.
2. Navigate to the `ComfyUI/custom_nodes/` directory.
3. Run the following command:
```git clone https://github.com/twri/sdxl_prompt_styler.git```
4. Restart ComfyUI.
This command clones the SDXL Prompt Styler repository into your `ComfyUI/custom_nodes/` directory. You should now be able to access and use the nodes from this repository.
### Inputs
* **text_positive** - text for the positive base prompt G
* **text_negative** - text for the negative base prompt G
* **log_prompt** - print inputs and outputs to stdout
### Outputs
* **positive_prompt_text_g** - combined prompt with style for positive promt G
* **negative_prompt_text_g** - combined prompt with style for negative promt G
+3
View File
@@ -0,0 +1,3 @@
from .sdxl_prompt_styler import NODE_CLASS_MAPPINGS, NODE_DISPLAY_NAME_MAPPINGS
__all__ = ['NODE_CLASS_MAPPINGS', 'NODE_DISPLAY_NAME_MAPPINGS']
Binary file not shown.

After

Width:  |  Height:  |  Size: 459 KiB

+818
View File
@@ -0,0 +1,818 @@
import json
import os
def read_json_file(file_path):
try:
# Open file, load JSON content into python dictionary, and return it.
with open(file_path, 'r') as file:
json_data = json.load(file)
return json_data
except Exception as e:
print(f"An error occurred: {str(e)}")
def read_sdxl_styles(json_data):
# Check that data is a list
if not isinstance(json_data, list):
print("Error: input data must be a list")
return None
names = []
# Iterate over each item in the data list
for item in json_data:
# Check that the item is a dictionary
if isinstance(item, dict):
# Check that 'name' is a key in the dictionary
if 'name' in item:
# Append the value of 'name' to the names list
names.append(item['name'])
return names
def read_sdxl_templates_replace_and_combine(json_data, template_name, positive_prompt, negative_prompt):
try:
# Check if json_data is a list
if not isinstance(json_data, list):
raise ValueError("Invalid JSON data. Expected a list of templates.")
for template in json_data:
# Check if template contains 'name' and 'prompt' fields
if 'name' not in template or 'prompt' not in template:
raise ValueError("Invalid template. Missing 'name' or 'prompt' field.")
# Replace {prompt} in the matching template
if template['name'] == template_name:
positive_prompt = template['prompt'].replace('{prompt}', positive_prompt)
json_negative_prompt = template.get('negative_prompt', "")
if negative_prompt:
negative_prompt = f"{json_negative_prompt}, {negative_prompt}" if json_negative_prompt else negative_prompt
else:
negative_prompt = json_negative_prompt
return positive_prompt, negative_prompt
# If function hasn't returned yet, no matching template was found
raise ValueError(f"No template found with name '{template_name}'.")
except Exception as e:
print(f"An error occurred: {str(e)}")
class SDXLPromptStylerMisc:
def __init__(self):
pass
@classmethod
def INPUT_TYPES(self):
# Get current file's directory
p = os.path.dirname(os.path.realpath(__file__))
# Construct 'sdxl_styles.json' path
file_path = os.path.join(p, 'sdxl_styles_misc.json')
# Read JSON from file
self.json_data = read_json_file(file_path)
# Retrieve styles from JSON data
styles = read_sdxl_styles(self.json_data)
return {
"required": {
"text_positive": ("STRING", {"default": "", "multiline": True}),
"text_negative": ("STRING", {"default": "", "multiline": True}),
"style": ((styles), ),
"log_prompt": (["No", "Yes"], {"default":"No"}),
},
}
RETURN_TYPES = ('STRING','STRING',)
RETURN_NAMES = ('positive_prompt_text_g','negative_prompt_text_g',)
FUNCTION = 'prompt_styler'
CATEGORY = 'Style Prompts'
def prompt_styler(self, text_positive, text_negative, style, log_prompt):
# Process and combine prompts in templates
# The function replaces the positive prompt placeholder in the template,
# and combines the negative prompt with the template's negative prompt, if they exist.
positive_prompt, negative_prompt = read_sdxl_templates_replace_and_combine(self.json_data, style, text_positive, text_negative)
# If logging is enabled (log_prompt is set to "Yes"),
# print the style, positive and negative text, and positive and negative prompts to the console
if log_prompt == "Yes":
print(f"style: {style}")
print(f"text_positive: {text_positive}")
print(f"text_negative: {text_negative}")
print(f"positive_prompt: {positive_prompt}")
print(f"negative_prompt: {negative_prompt}")
return positive_prompt, negative_prompt
class SDXLPromptStylerHorror:
def __init__(self):
pass
@classmethod
def INPUT_TYPES(self):
# Get current file's directory
p = os.path.dirname(os.path.realpath(__file__))
# Construct 'sdxl_styles.json' path
file_path = os.path.join(p, 'sdxl_styles_horror.json')
# Read JSON from file
self.json_data = read_json_file(file_path)
# Retrieve styles from JSON data
styles = read_sdxl_styles(self.json_data)
return {
"required": {
"text_positive": ("STRING", {"default": "", "multiline": True}),
"text_negative": ("STRING", {"default": "", "multiline": True}),
"style": ((styles), ),
"log_prompt": (["No", "Yes"], {"default":"No"}),
},
}
RETURN_TYPES = ('STRING','STRING',)
RETURN_NAMES = ('positive_prompt_text_g','negative_prompt_text_g',)
FUNCTION = 'prompt_styler'
CATEGORY = 'Style Prompts'
def prompt_styler(self, text_positive, text_negative, style, log_prompt):
# Process and combine prompts in templates
# The function replaces the positive prompt placeholder in the template,
# and combines the negative prompt with the template's negative prompt, if they exist.
positive_prompt, negative_prompt = read_sdxl_templates_replace_and_combine(self.json_data, style, text_positive, text_negative)
# If logging is enabled (log_prompt is set to "Yes"),
# print the style, positive and negative text, and positive and negative prompts to the console
if log_prompt == "Yes":
print(f"style: {style}")
print(f"text_positive: {text_positive}")
print(f"text_negative: {text_negative}")
print(f"positive_prompt: {positive_prompt}")
print(f"negative_prompt: {negative_prompt}")
return positive_prompt, negative_prompt
class SDXLPromptStylerbyArtist:
def __init__(self):
pass
@classmethod
def INPUT_TYPES(self):
# Get current file's directory
p = os.path.dirname(os.path.realpath(__file__))
# Construct 'sdxl_styles.json' path
file_path = os.path.join(p, 'sdxl_styles_artists.json')
# Read JSON from file
self.json_data = read_json_file(file_path)
# Retrieve styles from JSON data
styles = read_sdxl_styles(self.json_data)
return {
"required": {
"text_positive": ("STRING", {"default": "", "multiline": True}),
"text_negative": ("STRING", {"default": "", "multiline": True}),
"style": ((styles), ),
"log_prompt": (["No", "Yes"], {"default":"No"}),
},
}
RETURN_TYPES = ('STRING','STRING',)
RETURN_NAMES = ('positive_prompt_text_g','negative_prompt_text_g',)
FUNCTION = 'prompt_styler'
CATEGORY = 'Style Prompts'
def prompt_styler(self, text_positive, text_negative, style, log_prompt):
# Process and combine prompts in templates
# The function replaces the positive prompt placeholder in the template,
# and combines the negative prompt with the template's negative prompt, if they exist.
positive_prompt, negative_prompt = read_sdxl_templates_replace_and_combine(self.json_data, style, text_positive, text_negative)
# If logging is enabled (log_prompt is set to "Yes"),
# print the style, positive and negative text, and positive and negative prompts to the console
if log_prompt == "Yes":
print(f"style: {style}")
print(f"text_positive: {text_positive}")
print(f"text_negative: {text_negative}")
print(f"positive_prompt: {positive_prompt}")
print(f"negative_prompt: {negative_prompt}")
return positive_prompt, negative_prompt
class SDXLPromptStylerbyFocus:
def __init__(self):
pass
@classmethod
def INPUT_TYPES(self):
# Get current file's directory
p = os.path.dirname(os.path.realpath(__file__))
# Construct 'sdxl_styles.json' path
file_path = os.path.join(p, 'sdxl_styles_focus.json')
# Read JSON from file
self.json_data = read_json_file(file_path)
# Retrieve styles from JSON data
styles = read_sdxl_styles(self.json_data)
return {
"required": {
"text_positive": ("STRING", {"default": "", "multiline": True}),
"text_negative": ("STRING", {"default": "", "multiline": True}),
"style": ((styles), ),
"log_prompt": (["No", "Yes"], {"default":"No"}),
},
}
RETURN_TYPES = ('STRING','STRING',)
RETURN_NAMES = ('positive_prompt_text_g','negative_prompt_text_g',)
FUNCTION = 'prompt_styler'
CATEGORY = 'Style Prompts'
def prompt_styler(self, text_positive, text_negative, style, log_prompt):
# Process and combine prompts in templates
# The function replaces the positive prompt placeholder in the template,
# and combines the negative prompt with the template's negative prompt, if they exist.
positive_prompt, negative_prompt = read_sdxl_templates_replace_and_combine(self.json_data, style, text_positive, text_negative)
# If logging is enabled (log_prompt is set to "Yes"),
# print the style, positive and negative text, and positive and negative prompts to the console
if log_prompt == "Yes":
print(f"style: {style}")
print(f"text_positive: {text_positive}")
print(f"text_negative: {text_negative}")
print(f"positive_prompt: {positive_prompt}")
print(f"negative_prompt: {negative_prompt}")
return positive_prompt, negative_prompt
class SDXLPromptStylerbyTheme:
def __init__(self):
pass
@classmethod
def INPUT_TYPES(self):
# Get current file's directory
p = os.path.dirname(os.path.realpath(__file__))
# Construct 'sdxl_styles.json' path
file_path = os.path.join(p, 'sdxl_styles_themes.json')
# Read JSON from file
self.json_data = read_json_file(file_path)
# Retrieve styles from JSON data
styles = read_sdxl_styles(self.json_data)
return {
"required": {
"text_positive": ("STRING", {"default": "", "multiline": True}),
"text_negative": ("STRING", {"default": "", "multiline": True}),
"style": ((styles), ),
"log_prompt": (["No", "Yes"], {"default":"No"}),
},
}
RETURN_TYPES = ('STRING','STRING',)
RETURN_NAMES = ('positive_prompt_text_g','negative_prompt_text_g',)
FUNCTION = 'prompt_styler'
CATEGORY = 'Style Prompts'
def prompt_styler(self, text_positive, text_negative, style, log_prompt):
# Process and combine prompts in templates
# The function replaces the positive prompt placeholder in the template,
# and combines the negative prompt with the template's negative prompt, if they exist.
positive_prompt, negative_prompt = read_sdxl_templates_replace_and_combine(self.json_data, style, text_positive, text_negative)
# If logging is enabled (log_prompt is set to "Yes"),
# print the style, positive and negative text, and positive and negative prompts to the console
if log_prompt == "Yes":
print(f"style: {style}")
print(f"text_positive: {text_positive}")
print(f"text_negative: {text_negative}")
print(f"positive_prompt: {positive_prompt}")
print(f"negative_prompt: {negative_prompt}")
return positive_prompt, negative_prompt
class SDXLPromptStylerbyEnvironment:
def __init__(self):
pass
@classmethod
def INPUT_TYPES(self):
# Get current file's directory
p = os.path.dirname(os.path.realpath(__file__))
# Construct 'sdxl_styles.json' path
file_path = os.path.join(p, 'sdxl_styles_environment.json')
# Read JSON from file
self.json_data = read_json_file(file_path)
# Retrieve styles from JSON data
styles = read_sdxl_styles(self.json_data)
return {
"required": {
"text_positive": ("STRING", {"default": "", "multiline": True}),
"text_negative": ("STRING", {"default": "", "multiline": True}),
"style": ((styles), ),
"log_prompt": (["No", "Yes"], {"default":"No"}),
},
}
RETURN_TYPES = ('STRING','STRING',)
RETURN_NAMES = ('positive_prompt_text_g','negative_prompt_text_g',)
FUNCTION = 'prompt_styler'
CATEGORY = 'Style Prompts'
def prompt_styler(self, text_positive, text_negative, style, log_prompt):
# Process and combine prompts in templates
# The function replaces the positive prompt placeholder in the template,
# and combines the negative prompt with the template's negative prompt, if they exist.
positive_prompt, negative_prompt = read_sdxl_templates_replace_and_combine(self.json_data, style, text_positive, text_negative)
# If logging is enabled (log_prompt is set to "Yes"),
# print the style, positive and negative text, and positive and negative prompts to the console
if log_prompt == "Yes":
print(f"style: {style}")
print(f"text_positive: {text_positive}")
print(f"text_negative: {text_negative}")
print(f"positive_prompt: {positive_prompt}")
print(f"negative_prompt: {negative_prompt}")
return positive_prompt, negative_prompt
class SDXLPromptStylerbyMood:
def __init__(self):
pass
@classmethod
def INPUT_TYPES(self):
# Get current file's directory
p = os.path.dirname(os.path.realpath(__file__))
# Construct 'sdxl_styles.json' path
file_path = os.path.join(p, 'sdxl_styles_mood.json')
# Read JSON from file
self.json_data = read_json_file(file_path)
# Retrieve styles from JSON data
styles = read_sdxl_styles(self.json_data)
return {
"required": {
"text_positive": ("STRING", {"default": "", "multiline": True}),
"text_negative": ("STRING", {"default": "", "multiline": True}),
"style": ((styles), ),
"log_prompt": (["No", "Yes"], {"default":"No"}),
},
}
RETURN_TYPES = ('STRING','STRING',)
RETURN_NAMES = ('positive_prompt_text_g','negative_prompt_text_g',)
FUNCTION = 'prompt_styler'
CATEGORY = 'Style Prompts'
def prompt_styler(self, text_positive, text_negative, style, log_prompt):
# Process and combine prompts in templates
# The function replaces the positive prompt placeholder in the template,
# and combines the negative prompt with the template's negative prompt, if they exist.
positive_prompt, negative_prompt = read_sdxl_templates_replace_and_combine(self.json_data, style, text_positive, text_negative)
# If logging is enabled (log_prompt is set to "Yes"),
# print the style, positive and negative text, and positive and negative prompts to the console
if log_prompt == "Yes":
print(f"style: {style}")
print(f"text_positive: {text_positive}")
print(f"text_negative: {text_negative}")
print(f"positive_prompt: {positive_prompt}")
print(f"negative_prompt: {negative_prompt}")
return positive_prompt, negative_prompt
class SDXLPromptStylerbySubject:
def __init__(self):
pass
@classmethod
def INPUT_TYPES(self):
# Get current file's directory
p = os.path.dirname(os.path.realpath(__file__))
# Construct 'sdxl_styles.json' path
file_path = os.path.join(p, 'sdxl_styles_subject.json')
# Read JSON from file
self.json_data = read_json_file(file_path)
# Retrieve styles from JSON data
styles = read_sdxl_styles(self.json_data)
return {
"required": {
"text_positive": ("STRING", {"default": "", "multiline": True}),
"text_negative": ("STRING", {"default": "", "multiline": True}),
"style": ((styles), ),
"log_prompt": (["No", "Yes"], {"default":"No"}),
},
}
RETURN_TYPES = ('STRING','STRING',)
RETURN_NAMES = ('positive_prompt_text_g','negative_prompt_text_g',)
FUNCTION = 'prompt_styler'
CATEGORY = 'Style Prompts'
def prompt_styler(self, text_positive, text_negative, style, log_prompt):
# Process and combine prompts in templates
# The function replaces the positive prompt placeholder in the template,
# and combines the negative prompt with the template's negative prompt, if they exist.
positive_prompt, negative_prompt = read_sdxl_templates_replace_and_combine(self.json_data, style, text_positive, text_negative)
# If logging is enabled (log_prompt is set to "Yes"),
# print the style, positive and negative text, and positive and negative prompts to the console
if log_prompt == "Yes":
print(f"style: {style}")
print(f"text_positive: {text_positive}")
print(f"text_negative: {text_negative}")
print(f"positive_prompt: {positive_prompt}")
print(f"negative_prompt: {negative_prompt}")
return positive_prompt, negative_prompt
class SDXLPromptStylerbyTimeofDay:
def __init__(self):
pass
@classmethod
def INPUT_TYPES(self):
# Get current file's directory
p = os.path.dirname(os.path.realpath(__file__))
# Construct 'sdxl_styles.json' path
file_path = os.path.join(p, 'sdxl_styles_tod.json')
# Read JSON from file
self.json_data = read_json_file(file_path)
# Retrieve styles from JSON data
styles = read_sdxl_styles(self.json_data)
return {
"required": {
"text_positive": ("STRING", {"default": "", "multiline": True}),
"text_negative": ("STRING", {"default": "", "multiline": True}),
"style": ((styles), ),
"log_prompt": (["No", "Yes"], {"default":"No"}),
},
}
RETURN_TYPES = ('STRING','STRING',)
RETURN_NAMES = ('positive_prompt_text_g','negative_prompt_text_g',)
FUNCTION = 'prompt_styler'
CATEGORY = 'Style Prompts'
def prompt_styler(self, text_positive, text_negative, style, log_prompt):
# Process and combine prompts in templates
# The function replaces the positive prompt placeholder in the template,
# and combines the negative prompt with the template's negative prompt, if they exist.
positive_prompt, negative_prompt = read_sdxl_templates_replace_and_combine(self.json_data, style, text_positive, text_negative)
# If logging is enabled (log_prompt is set to "Yes"),
# print the style, positive and negative text, and positive and negative prompts to the console
if log_prompt == "Yes":
print(f"style: {style}")
print(f"text_positive: {text_positive}")
print(f"text_negative: {text_negative}")
print(f"positive_prompt: {positive_prompt}")
print(f"negative_prompt: {negative_prompt}")
return positive_prompt, negative_prompt
class SDXLPromptStylerbyCamera:
def __init__(self):
pass
@classmethod
def INPUT_TYPES(self):
# Get current file's directory
p = os.path.dirname(os.path.realpath(__file__))
# Construct 'sdxl_styles.json' path
file_path = os.path.join(p, 'sdxl_styles_camera.json')
# Read JSON from file
self.json_data = read_json_file(file_path)
# Retrieve styles from JSON data
styles = read_sdxl_styles(self.json_data)
return {
"required": {
"text_positive": ("STRING", {"default": "", "multiline": True}),
"text_negative": ("STRING", {"default": "", "multiline": True}),
"style": ((styles), ),
"log_prompt": (["No", "Yes"], {"default":"No"}),
},
}
RETURN_TYPES = ('STRING','STRING',)
RETURN_NAMES = ('positive_prompt_text_g','negative_prompt_text_g',)
FUNCTION = 'prompt_styler'
CATEGORY = 'Style Prompts'
def prompt_styler(self, text_positive, text_negative, style, log_prompt):
# Process and combine prompts in templates
# The function replaces the positive prompt placeholder in the template,
# and combines the negative prompt with the template's negative prompt, if they exist.
positive_prompt, negative_prompt = read_sdxl_templates_replace_and_combine(self.json_data, style, text_positive, text_negative)
# If logging is enabled (log_prompt is set to "Yes"),
# print the style, positive and negative text, and positive and negative prompts to the console
if log_prompt == "Yes":
print(f"style: {style}")
print(f"text_positive: {text_positive}")
print(f"text_negative: {text_negative}")
print(f"positive_prompt: {positive_prompt}")
print(f"negative_prompt: {negative_prompt}")
return positive_prompt, negative_prompt
class SDXLPromptStylerbyComposition:
def __init__(self):
pass
@classmethod
def INPUT_TYPES(self):
# Get current file's directory
p = os.path.dirname(os.path.realpath(__file__))
# Construct 'sdxl_styles.json' path
file_path = os.path.join(p, 'sdxl_styles_composition.json')
# Read JSON from file
self.json_data = read_json_file(file_path)
# Retrieve styles from JSON data
styles = read_sdxl_styles(self.json_data)
return {
"required": {
"text_positive": ("STRING", {"default": "", "multiline": True}),
"text_negative": ("STRING", {"default": "", "multiline": True}),
"style": ((styles), ),
"log_prompt": (["No", "Yes"], {"default":"No"}),
},
}
RETURN_TYPES = ('STRING','STRING',)
RETURN_NAMES = ('positive_prompt_text_g','negative_prompt_text_g',)
FUNCTION = 'prompt_styler'
CATEGORY = 'Style Prompts'
def prompt_styler(self, text_positive, text_negative, style, log_prompt):
# Process and combine prompts in templates
# The function replaces the positive prompt placeholder in the template,
# and combines the negative prompt with the template's negative prompt, if they exist.
positive_prompt, negative_prompt = read_sdxl_templates_replace_and_combine(self.json_data, style, text_positive, text_negative)
# If logging is enabled (log_prompt is set to "Yes"),
# print the style, positive and negative text, and positive and negative prompts to the console
if log_prompt == "Yes":
print(f"style: {style}")
print(f"text_positive: {text_positive}")
print(f"text_negative: {text_negative}")
print(f"positive_prompt: {positive_prompt}")
print(f"negative_prompt: {negative_prompt}")
return positive_prompt, negative_prompt
class SDXLPromptStylerbyLighting:
def __init__(self):
pass
@classmethod
def INPUT_TYPES(self):
# Get current file's directory
p = os.path.dirname(os.path.realpath(__file__))
# Construct 'sdxl_styles.json' path
file_path = os.path.join(p, 'sdxl_styles_lighting.json')
# Read JSON from file
self.json_data = read_json_file(file_path)
# Retrieve styles from JSON data
styles = read_sdxl_styles(self.json_data)
return {
"required": {
"text_positive": ("STRING", {"default": "", "multiline": True}),
"text_negative": ("STRING", {"default": "", "multiline": True}),
"style": ((styles), ),
"log_prompt": (["No", "Yes"], {"default":"No"}),
},
}
RETURN_TYPES = ('STRING','STRING',)
RETURN_NAMES = ('positive_prompt_text_g','negative_prompt_text_g',)
FUNCTION = 'prompt_styler'
CATEGORY = 'Style Prompts'
def prompt_styler(self, text_positive, text_negative, style, log_prompt):
# Process and combine prompts in templates
# The function replaces the positive prompt placeholder in the template,
# and combines the negative prompt with the template's negative prompt, if they exist.
positive_prompt, negative_prompt = read_sdxl_templates_replace_and_combine(self.json_data, style, text_positive, text_negative)
# If logging is enabled (log_prompt is set to "Yes"),
# print the style, positive and negative text, and positive and negative prompts to the console
if log_prompt == "Yes":
print(f"style: {style}")
print(f"text_positive: {text_positive}")
print(f"text_negative: {text_negative}")
print(f"positive_prompt: {positive_prompt}")
print(f"negative_prompt: {negative_prompt}")
return positive_prompt, negative_prompt
class SDXLPromptStylerbyDepth:
def __init__(self):
pass
@classmethod
def INPUT_TYPES(self):
# Get current file's directory
p = os.path.dirname(os.path.realpath(__file__))
# Construct 'sdxl_styles.json' path
file_path = os.path.join(p, 'sdxl_styles_depth.json')
# Read JSON from file
self.json_data = read_json_file(file_path)
# Retrieve styles from JSON data
styles = read_sdxl_styles(self.json_data)
return {
"required": {
"text_positive": ("STRING", {"default": "", "multiline": True}),
"text_negative": ("STRING", {"default": "", "multiline": True}),
"style": ((styles), ),
"log_prompt": (["No", "Yes"], {"default":"No"}),
},
}
RETURN_TYPES = ('STRING','STRING',)
RETURN_NAMES = ('positive_prompt_text_g','negative_prompt_text_g',)
FUNCTION = 'prompt_styler'
CATEGORY = 'Style Prompts'
def prompt_styler(self, text_positive, text_negative, style, log_prompt):
# Process and combine prompts in templates
# The function replaces the positive prompt placeholder in the template,
# and combines the negative prompt with the template's negative prompt, if they exist.
positive_prompt, negative_prompt = read_sdxl_templates_replace_and_combine(self.json_data, style, text_positive, text_negative)
# If logging is enabled (log_prompt is set to "Yes"),
# print the style, positive and negative text, and positive and negative prompts to the console
if log_prompt == "Yes":
print(f"style: {style}")
print(f"text_positive: {text_positive}")
print(f"text_negative: {text_negative}")
print(f"positive_prompt: {positive_prompt}")
print(f"negative_prompt: {negative_prompt}")
return positive_prompt, negative_prompt
class SDXLPromptStylerbyFilter:
def __init__(self):
pass
@classmethod
def INPUT_TYPES(self):
# Get current file's directory
p = os.path.dirname(os.path.realpath(__file__))
# Construct 'sdxl_styles.json' path
file_path = os.path.join(p, 'sdxl_styles_filter.json')
# Read JSON from file
self.json_data = read_json_file(file_path)
# Retrieve styles from JSON data
styles = read_sdxl_styles(self.json_data)
return {
"required": {
"text_positive": ("STRING", {"default": "", "multiline": True}),
"text_negative": ("STRING", {"default": "", "multiline": True}),
"style": ((styles), ),
"log_prompt": (["No", "Yes"], {"default":"No"}),
},
}
RETURN_TYPES = ('STRING','STRING',)
RETURN_NAMES = ('positive_prompt_text_g','negative_prompt_text_g',)
FUNCTION = 'prompt_styler'
CATEGORY = 'Style Prompts'
def prompt_styler(self, text_positive, text_negative, style, log_prompt):
# Process and combine prompts in templates
# The function replaces the positive prompt placeholder in the template,
# and combines the negative prompt with the template's negative prompt, if they exist.
positive_prompt, negative_prompt = read_sdxl_templates_replace_and_combine(self.json_data, style, text_positive, text_negative)
# If logging is enabled (log_prompt is set to "Yes"),
# print the style, positive and negative text, and positive and negative prompts to the console
if log_prompt == "Yes":
print(f"style: {style}")
print(f"text_positive: {text_positive}")
print(f"text_negative: {text_negative}")
print(f"positive_prompt: {positive_prompt}")
print(f"negative_prompt: {negative_prompt}")
return positive_prompt, negative_prompt
class SDXLPromptStylerbyOriginal:
def __init__(self):
pass
@classmethod
def INPUT_TYPES(self):
# Get current file's directory
p = os.path.dirname(os.path.realpath(__file__))
# Construct 'sdxl_styles.json' path
file_path = os.path.join(p, 'sdxl_styles_original.json')
# Read JSON from file
self.json_data = read_json_file(file_path)
# Retrieve styles from JSON data
styles = read_sdxl_styles(self.json_data)
return {
"required": {
"text_positive": ("STRING", {"default": "", "multiline": True}),
"text_negative": ("STRING", {"default": "", "multiline": True}),
"style": ((styles), ),
"log_prompt": (["No", "Yes"], {"default":"No"}),
},
}
RETURN_TYPES = ('STRING','STRING',)
RETURN_NAMES = ('positive_prompt_text_g','negative_prompt_text_g',)
FUNCTION = 'prompt_styler'
CATEGORY = 'Style Prompts'
def prompt_styler(self, text_positive, text_negative, style, log_prompt):
# Process and combine prompts in templates
# The function replaces the positive prompt placeholder in the template,
# and combines the negative prompt with the template's negative prompt, if they exist.
positive_prompt, negative_prompt = read_sdxl_templates_replace_and_combine(self.json_data, style, text_positive, text_negative)
# If logging is enabled (log_prompt is set to "Yes"),
# print the style, positive and negative text, and positive and negative prompts to the console
if log_prompt == "Yes":
print(f"style: {style}")
print(f"text_positive: {text_positive}")
print(f"text_negative: {text_negative}")
print(f"positive_prompt: {positive_prompt}")
print(f"negative_prompt: {negative_prompt}")
return positive_prompt, negative_prompt
NODE_CLASS_MAPPINGS = {
"SDXLPromptStylerbyArtist": SDXLPromptStylerbyArtist,
"SDXLPromptStylerbyCamera": SDXLPromptStylerbyCamera,
"SDXLPromptStylerbyComposition": SDXLPromptStylerbyComposition,
"SDXLPromptStylerbyDepth": SDXLPromptStylerbyDepth,
"SDXLPromptStylerbyEnvironment": SDXLPromptStylerbyEnvironment,
"SDXLPromptStylerbyFilter": SDXLPromptStylerbyFilter,
"SDXLPromptStylerbyFocus": SDXLPromptStylerbyFocus,
"SDXLPromptStylerHorror": SDXLPromptStylerHorror,
"SDXLPromptStylerbyLighting": SDXLPromptStylerbyLighting,
"SDXLPromptStylerMisc": SDXLPromptStylerMisc,
"SDXLPromptStylerbyMood": SDXLPromptStylerbyMood,
"SDXLPromptStylerbyOriginal": SDXLPromptStylerbyOriginal,
"SDXLPromptStylerbySubject": SDXLPromptStylerbySubject,
"SDXLPromptStylerbyTheme": SDXLPromptStylerbyTheme,
"SDXLPromptStylerbyTimeofDay": SDXLPromptStylerbyTimeofDay,
}
NODE_DISPLAY_NAME_MAPPINGS = {
"SDXLPromptStylerbyArtist": "Prompt Styler Artist",
"SDXLPromptStylerbyCamera": "Prompt Styler Camera",
"SDXLPromptStylerbyComposition": "Prompt Styler Composition",
"SDXLPromptStylerbyDepth": "Prompt Styler Depth",
"SDXLPromptStylerbyEnvironment": "Prompt Styler Environment",
"SDXLPromptStylerbyFilter": "Prompt Styler Filter",
"SDXLPromptStylerbyFocus": "Prompt Styler Focus",
"SDXLPromptStylerHorror": "Prompt Styler Horror",
"SDXLPromptStylerbyLighting": "Prompt Styler Lighting",
"SDXLPromptStylerMisc": "Prompt Styler Misc",
"SDXLPromptStylerbyMood": "Prompt Styler Mood",
"SDXLPromptStylerbyOriginal": "Prompt Styler Original",
"SDXLPromptStylerbySubject": "Prompt Styler Subject",
"SDXLPromptStylerbyTheme": "Prompt Styler Theme",
"SDXLPromptStylerbyTimeofDay": "Prompt Styler Time of Day",
}
File diff suppressed because it is too large Load Diff
+637
View File
@@ -0,0 +1,637 @@
[
{
"name": "none byCamera",
"prompt": " {prompt} ",
"negative_prompt": " "
},
{
"name": "Canon EOS 90D",
"prompt": "Photograph of {prompt}, captured on a (Canon EOS 90D)",
"negative_prompt": "slow shooting, inaccurate capture, static subjects"
},
{
"name": "Canon EOS M50",
"prompt": "Photograph of {prompt}, captured on a (Canon EOS M50)",
"negative_prompt": "imbalanced quality"
},
{
"name": "Canon EOS M50 Mark II",
"prompt": "Photograph of {prompt}, captured on a (Canon EOS M50 Mark II)",
"negative_prompt": "complex, non-vlogging, specialized photography"
},
{
"name": "Canon EOS M6 Mark II",
"prompt": "Photograph of {prompt}, captured on a (Canon EOS M6 Mark II)",
"negative_prompt": "professionals, poor image quality, slow capture, specialized"
},
{
"name": "Canon EOS R5",
"prompt": "Photograph of {prompt}, captured on a (Canon EOS R5)",
"negative_prompt": "inferior capture, lack of stabilization, amateur use"
},
{
"name": "Canon EOS R5 (Unique Variant)",
"prompt": "Photograph of {prompt}, captured on a (Canon EOS R5)",
"negative_prompt": "low-resolution, basic video, amateurs, single field"
},
{
"name": "Canon EOS RP",
"prompt": "Photograph of {prompt}, captured on a (Canon EOS RP)",
"negative_prompt": "cropped frame, amateur quality, professionals"
},
{
"name": "Canon EOS Rebel T8i",
"prompt": "Photograph of {prompt}, captured on a (Canon EOS Rebel T8i), characterized by (vibrant colors, sharp details)",
"negative_prompt": "professional-level"
},
{
"name": "Canon EOS Rebel T8i (Unique Variant)",
"prompt": "Photograph of {prompt}, captured on a (Canon EOS Rebel T8i)",
"negative_prompt": "professional-level"
},
{
"name": "Canon EOS-1D X Mark III",
"prompt": "Photograph of {prompt}, captured on a (Canon EOS-1D X Mark III)",
"negative_prompt": "slow speed, inaccuracy"
},
{
"name": "Canon EOS-1D X Mark III (Unique Dynamic Capture Variant)",
"prompt": "Photograph of {prompt}, captured on a (Canon EOS-1D X Mark III)",
"negative_prompt": "amateur, portrait photographers, slow shooting, inaccurate capture, static scenes"
},
{
"name": "Canon EOS-1D X Mark III (Unique Dynamic Scenes Variant)",
"prompt": "Photograph of {prompt}, captured on a (Canon EOS-1D X Mark III)",
"negative_prompt": "amateur, slow shooting, unreliable capture, still life, passive scenes"
},
{
"name": "Canon PowerShot G7 X Mark III",
"prompt": "Photograph of {prompt}, captured on a (Canon PowerShot G7 X Mark III)",
"negative_prompt": "complex, poor vlogging, HD video"
},
{
"name": "Canon PowerShot G7 X Mark III (Unique Specific Variant)",
"prompt": "Photograph of {prompt}, captured on a (Canon PowerShot G7 X Mark III)",
"negative_prompt": "photographers, video limitations, professional recording"
},
{
"name": "Canon PowerShot G7 X Mark III (Unique Variant)",
"prompt": "Photograph of {prompt}, captured on a (Canon PowerShot G7 X Mark III )",
"negative_prompt": "still photography, HD video, traditional photographers, stationary"
},
{
"name": "Fujifilm FinePix XP140",
"prompt": "Photograph of {prompt}, captured on a (Fujifilm FinePix XP140)",
"negative_prompt": "indoor use, shock-prone"
},
{
"name": "Fujifilm GFX 100",
"prompt": "Photograph of {prompt}, captured on a (Fujifilm GFX 100)",
"negative_prompt": "low resolution, color inconsistency, amateurish quality"
},
{
"name": "Fujifilm GFX 100 (Unique Specific Variant)",
"prompt": "Photograph of {prompt}, captured on a (Fujifilm GFX 100)",
"negative_prompt": "low resolution, lack of stabilization, blurred images"
},
{
"name": "Fujifilm GFX 100 (Unique Variant)",
"prompt": "Photograph of {prompt}, captured on a (Fujifilm GFX 100 )",
"negative_prompt": "low resolution, lack of detail, limited range, amateur"
},
{
"name": "Fujifilm GFX 50S",
"prompt": "Photograph of {prompt}, captured on a (Fujifilm GFX 50S)",
"negative_prompt": "low resolution, poor tones, casual snapfocus"
},
{
"name": "Fujifilm Instax Mini 11",
"prompt": "Photograph of {prompt}, captured on a (Fujifilm Instax Mini 11)",
"negative_prompt": "serious, complex, professional events, solitude, digital storage"
},
{
"name": "Fujifilm X-E4",
"prompt": "Photograph of {prompt}, captured on a (Fujifilm X-E4)",
"negative_prompt": "dull color, studio photography"
},
{
"name": "Fujifilm X-E4 (Unique Variant)",
"prompt": "Photograph of {prompt}, captured on a (Fujifilm X-E4)",
"negative_prompt": "studio, portrait photographers"
},
{
"name": "Fujifilm X-Pro3",
"prompt": "Photograph of {prompt}, captured on a (Fujifilm X-Pro3)",
"negative_prompt": "viewfinder, digital look, modern images"
},
{
"name": "Fujifilm X-Pro3 (Unique Variant)",
"prompt": "Photograph of {prompt}, captured on a (Fujifilm X-Pro3)",
"negative_prompt": "viewfinder, digital look, modern experience, digital aesthetics"
},
{
"name": "Fujifilm X-T200",
"prompt": "Photograph of {prompt}, captured on a (Fujifilm X-T200)",
"negative_prompt": "complex, dull color, professionals, low-quality images"
},
{
"name": "Fujifilm X-T4",
"prompt": "Photograph of {prompt}, captured on a (Fujifilm X-T4)",
"negative_prompt": "slowness, lack of stabilization, amateur videography"
},
{
"name": "Fujifilm X-T4 (Unique Strong Stabilization)",
"prompt": "Photograph of {prompt}, captured on a (Fujifilm X-T4)",
"negative_prompt": "weak stabilization, specialized performance, photography only, videography only"
},
{
"name": "Fujifilm X100V",
"prompt": "Photograph of {prompt}, captured on a (Fujifilm X100V)",
"negative_prompt": "digital look, contemporary images"
},
{
"name": "Fujifilm X100V (Unique Variant)",
"prompt": "Photograph of {prompt}, captured on a (Fujifilm X100V)",
"negative_prompt": "modern looks, average image quality, studio photography"
},
{
"name": "GoPro HERO9 Black",
"prompt": "Photograph of {prompt}, captured on a (GoPro HERO9 Black)",
"negative_prompt": "shaky footage, static scenes"
},
{
"name": "Hasselblad 907X 50C",
"prompt": "Photograph of {prompt}, captured on a (Hasselblad 907X 50C)",
"negative_prompt": "modern aesthetics, poor detail"
},
{
"name": "Hasselblad 907X 50C (Unique Large Format)",
"prompt": "Photograph of {prompt}, captured on a (Hasselblad 907X 50C)",
"negative_prompt": "poor image quality"
},
{
"name": "Hasselblad H5D-50c",
"prompt": "Photograph of {prompt}, captured on a (Hasselblad H5D-50c)",
"negative_prompt": "lack of detail, color inaccuracy"
},
{
"name": "Hasselblad H6D-100c",
"prompt": "Photograph of {prompt}, captured on a (Hasselblad H6D-100c)",
"negative_prompt": "low resolution, amateur work"
},
{
"name": "Hasselblad X1D II 50C",
"prompt": "Photograph of {prompt}, captured on a (Hasselblad X1D II 50C)",
"negative_prompt": "limited detail, narrow dynamic range, dull colors"
},
{
"name": "Hasselblad X1D II 50C (Unique High Resolution)",
"prompt": "Photograph of {prompt}, captured on a (Hasselblad X1D II 50C)",
"negative_prompt": "low resolution, color inaccuracy, amateur portraits"
},
{
"name": "Hasselblad XCD 4/45P",
"prompt": "Photograph of {prompt}, captured on a (Hasselblad XCD 4/45P)",
"negative_prompt": "average , harsh bokeh"
},
{
"name": "Leica CL",
"prompt": "Photograph of {prompt}, captured on a (Leica CL)",
"negative_prompt": "average optics, soft images"
},
{
"name": "Leica M-D",
"prompt": "Photograph of {prompt}, captured on a (Leica M-D)",
"negative_prompt": "DSLR, enhanced photography"
},
{
"name": "Leica M10 Monochrom",
"prompt": "Photograph of {prompt}, captured on a (Leica M10 Monochrom)",
"negative_prompt": "color photography, flat tones, contemporary look"
},
{
"name": "Leica M10 Monochrom (Unique Variant)",
"prompt": "Photograph of {prompt}, captured on a (Leica M10 Monochrom)",
"negative_prompt": "color photography, conventional, non-artists, color enthusiasts"
},
{
"name": "Leica M10-R",
"prompt": "Photograph of {prompt}, captured on a (Leica M10-R)",
"negative_prompt": "mediocre quality, lack of detail, snapshot photography"
},
{
"name": "Leica M11",
"prompt": "Photograph of {prompt}, captured on a (Leica M11)",
"negative_prompt": ""
},
{
"name": "Leica Q-P",
"prompt": "Photograph of {prompt}, captured on a (Leica Q-P)",
"negative_prompt": "attention-grabbing, studio photographers"
},
{
"name": "Leica Q2",
"prompt": "Photograph of {prompt}, captured on a (Leica Q2)",
"negative_prompt": "cropped sensor, lack of , low"
},
{
"name": "Leica Q2 Monochrom",
"prompt": "Photograph of {prompt}, captured on a (Leica Q2 Monochrom)",
"negative_prompt": "color photography, complex approach, low-resolution, color enthusiasts"
},
{
"name": "Leica S3",
"prompt": "Photograph of {prompt}, captured on a (Leica S3)",
"negative_prompt": "mediocre image quality, basic build, low-end commercial"
},
{
"name": "Leica SL2",
"prompt": "Photograph of {prompt}, captured on a (Leica SL2)",
"negative_prompt": "low-quality images, cheap feel"
},
{
"name": "Leica SL2 (Unique Variant)",
"prompt": "Photograph of {prompt}, captured on a (Leica SL2)",
"negative_prompt": "cropped sensor, mediocre quality, snap, budget advertising"
},
{
"name": "Leica SL2-S",
"prompt": "Photograph of {prompt}, captured on a (Leica SL2-S)",
"negative_prompt": "cropped-frame, basic build, specialization, photography only, videography only"
},
{
"name": "Nikon Coolpix P950",
"prompt": "Photograph of {prompt}, captured on a (Nikon Coolpix P950)",
"negative_prompt": "limited zoom, lack of stabilization, close-up photography"
},
{
"name": "Nikon Coolpix P950 (Unique Variant)",
"prompt": "Photograph of {prompt}, captured on a (Nikon Coolpix P950)",
"negative_prompt": "limited zoom, no stabilization, close-up subjects"
},
{
"name": "Nikon Coolpix W300",
"prompt": "Photograph of {prompt}, captured on a (Nikon Coolpix W300)",
"negative_prompt": "studio, , HD video"
},
{
"name": "Nikon D3500",
"prompt": "Photograph of {prompt}, captured on a (Nikon D3500), characterized by (rich colors, smooth tonal transitions)",
"negative_prompt": "poor image quality"
},
{
"name": "Nikon D6",
"prompt": "Photograph of {prompt}, captured on a (Nikon D6)",
"negative_prompt": "amateur, slowness, inaccuracy, still life photography, static scenes"
},
{
"name": "Nikon D780",
"prompt": "Photograph of {prompt}, captured on a (Nikon D780)",
"negative_prompt": "poor low-light, limited video, low-detail images"
},
{
"name": "Nikon D850",
"prompt": "Photograph of {prompt}, captured on a (Nikon D850)",
"negative_prompt": "low resolution, slow performance"
},
{
"name": "Nikon D850 (Unique High Resolution)",
"prompt": "Photograph of {prompt}, captured on a (Nikon D850)",
"negative_prompt": "cropped-frame, low resolution, specialized performance, amateur, narrow range"
},
{
"name": "Nikon Z5",
"prompt": "Photograph of {prompt}, captured on a (Nikon Z5)",
"negative_prompt": "cropped-frame, imbalance, poor performance, expensive, beginners, high-end professionals"
},
{
"name": "Nikon Z50",
"prompt": "Photograph of {prompt}, captured on a (Nikon Z50)",
"negative_prompt": "complex, dull images"
},
{
"name": "Nikon Z50 (Unique Variant)",
"prompt": "Photograph of {prompt}, captured on a (Nikon Z50)",
"negative_prompt": "complex, professionals, stationary photography"
},
{
"name": "Nikon Z6",
"prompt": "Photograph of {prompt}, captured on a (Nikon Z6)",
"negative_prompt": "cropped sensor, poor low-light performance, noisy images"
},
{
"name": "Nikon Z6 II",
"prompt": "Photograph of {prompt}, captured on a (Nikon Z6 II)",
"negative_prompt": "poor low-light, slow capture, static , day scenes"
},
{
"name": "Nikon Z7 II",
"prompt": "Photograph of {prompt}, captured on a (Nikon Z7 II)",
"negative_prompt": "low-resolution, slow shooting, lack of detail, static scenes"
},
{
"name": "Nikon Z7 II (Unique Variant)",
"prompt": "Photograph of {prompt}, captured on a (Nikon Z7 II)",
"negative_prompt": "poor resolution, limited range, portrait photographers, vague details"
},
{
"name": "Olympus E-M1X",
"prompt": "Photograph of {prompt}, captured on a (Olympus E-M1X)",
"negative_prompt": "weak stabilization, slow capture, still life, passive scenes"
},
{
"name": "Olympus OM-D E-M1 Mark II",
"prompt": "Photograph of {prompt}, captured on a (Olympus OM-D E-M1 Mark II)",
"negative_prompt": "slow capture, action, missed timing"
},
{
"name": "Olympus OM-D E-M10 Mark IV",
"prompt": "Photograph of {prompt}, captured on a (Olympus OM-D E-M10 Mark IV)",
"negative_prompt": "heavy, fixed location, shaky images"
},
{
"name": "Olympus OM-D E-M10 Mark IV (Unique Variant)",
"prompt": "Photograph of {prompt}, captured on a (Olympus OM-D E-M10 Mark IV)",
"negative_prompt": "complex, professional-level"
},
{
"name": "Olympus OM-D E-M1X",
"prompt": "Photograph of {prompt}, captured on a (Olympus OM-D E-M1X)",
"negative_prompt": "amateur, still life, basic stabilization, non-weather-sealed, controlled conditions"
},
{
"name": "Olympus OM-D E-M5 Mark III",
"prompt": "Photograph of {prompt}, captured on a (Olympus OM-D E-M5 Mark III)",
"negative_prompt": "weak stabilization, studio photography"
},
{
"name": "Olympus OM-D E-M5 Mark III (Unique Variant)",
"prompt": "Photograph of {prompt}, captured on a (Olympus OM-D E-M5 Mark III)",
"negative_prompt": "heavy, non-weather-sealed, indoor photography, controlled weather"
},
{
"name": "Olympus PEN E-PL10",
"prompt": "Photograph of {prompt}, captured on a (Olympus PEN E-PL10)",
"negative_prompt": "technical photographers, images"
},
{
"name": "Olympus PEN-F",
"prompt": "Photograph of {prompt}, captured on a (Olympus PEN-F)",
"negative_prompt": "poor color reproduction, dull photos"
},
{
"name": "Olympus PEN-F (Unique Specific Variant)",
"prompt": "Photograph of {prompt}, captured on a (Olympus PEN-F)",
"negative_prompt": "fixed , limited creativity, studio photography"
},
{
"name": "Olympus PEN-F (Unique Variant)",
"prompt": "Photograph of {prompt}, captured on a (Olympus PEN-F )",
"negative_prompt": "modern-styled, controls, non-artists, lack of style, limited functionality"
},
{
"name": "Olympus Tough TG-6",
"prompt": "Photograph of {prompt}, captured on a (Olympus Tough TG-6)",
"negative_prompt": "not waterproof, indoor photography"
},
{
"name": "Olympus Tough TG-6 (Unique Variant)",
"prompt": "Photograph of {prompt}, captured on a (Olympus Tough TG-6)",
"negative_prompt": "studio, , shock-prone"
},
{
"name": "Panasonic Lumix DC-G100",
"prompt": "Photograph of {prompt}, captured on a (Panasonic Lumix DC-G100)",
"negative_prompt": "photographers, external microphone required, poor audio"
},
{
"name": "Panasonic Lumix DC-G9",
"prompt": "Photograph of {prompt}, captured on a (Panasonic Lumix DC-G9)",
"negative_prompt": "videographers, low-resolution, slow burst, still life, static scenes"
},
{
"name": "Panasonic Lumix DC-GH5",
"prompt": "Photograph of {prompt}, captured on a (Panasonic Lumix DC-GH5)",
"negative_prompt": "HD video, basic features, photographers, non-cinematic content"
},
{
"name": "Panasonic Lumix DC-S1R",
"prompt": "Photograph of {prompt}, captured on a (Panasonic Lumix DC-S1R)",
"negative_prompt": "low-resolution, build, landscapes, amateur indoor"
},
{
"name": "Panasonic Lumix DC-S5",
"prompt": "Photograph of {prompt}, captured on a (Panasonic Lumix DC-S5)",
"negative_prompt": "photo-only, limited video, specialization, single-format creators"
},
{
"name": "Panasonic Lumix DC-S5 (Unique Variant)",
"prompt": "Photograph of {prompt}, captured on a (Panasonic Lumix DC-S5)",
"negative_prompt": "cropped-frame, imbalance, poor image quality, limited video, specialized creators"
},
{
"name": "Panasonic Lumix DMC-FZ300",
"prompt": "Photograph of {prompt}, captured on a (Panasonic Lumix DMC-FZ300), characterized by (fast autofocus, great macro capabilities)",
"negative_prompt": "variable aperture, non-weather-sealed, indoor photography"
},
{
"name": "Panasonic Lumix DMC-FZ300 (Unique Variant)",
"prompt": "Photograph of {prompt}, captured on a (Panasonic Lumix DMC-FZ300)",
"negative_prompt": "fixed , studio photographers, non-adventurous"
},
{
"name": "Panasonic Lumix DMC-LX100 II",
"prompt": "Photograph of {prompt}, captured on a (Panasonic Lumix DMC-LX100 II)",
"negative_prompt": "budget, slow , HD video, studio work, specialized photography"
},
{
"name": "Panasonic Lumix FZ1000 II",
"prompt": "Photograph of {prompt}, captured on a (Panasonic Lumix FZ1000 II)",
"negative_prompt": "limited zoom, HD video, single-purpose"
},
{
"name": "Panasonic Lumix G100",
"prompt": "Photograph of {prompt}, captured on a (Panasonic Lumix G100)",
"negative_prompt": "still photography, HD video, fixed , limited framing"
},
{
"name": "Panasonic Lumix GH5 II",
"prompt": "Photograph of {prompt}, captured on a (Panasonic Lumix GH5 II)",
"negative_prompt": "still photography, shaky footage, low frame rates, amateur video"
},
{
"name": "Panasonic Lumix S1",
"prompt": "Photograph of {prompt}, captured on a (Panasonic Lumix S1)",
"negative_prompt": "still photography, photographers, indoor videography"
},
{
"name": "Panasonic Lumix S1R",
"prompt": "Photograph of {prompt}, captured on a (Panasonic Lumix S1R)",
"negative_prompt": "low resolution, lack of detail, amateur use"
},
{
"name": "Panasonic Lumix S5",
"prompt": "Photograph of {prompt}, captured on a (Panasonic Lumix S5)",
"negative_prompt": "HD video, non-vlogging"
},
{
"name": "Pentax 645Z",
"prompt": "Photograph of {prompt}, captured on a (Pentax 645Z)",
"negative_prompt": "lack of detail, limited range, amateur portraits"
},
{
"name": "Pentax 645Z (Unique Large Format)",
"prompt": "Photograph of {prompt}, captured on a (Pentax 645Z)",
"negative_prompt": "average image quality, limited range, amateur, action, on-the-go"
},
{
"name": "Pentax K-1 Mark II",
"prompt": "Photograph of {prompt}, captured on a (Pentax K-1 Mark II)",
"negative_prompt": "soft , limited dynamic range"
},
{
"name": "Pentax KP",
"prompt": "Photograph of {prompt}, captured on a (Pentax KP)",
"negative_prompt": "build, non-weather-sealed, indoor photography"
},
{
"name": "Phase One XF IQ4 150MP",
"prompt": "Photograph of {prompt}, captured on a (Phase One XF IQ4 150MP)",
"negative_prompt": "low-end, low resolution, amateur, lack of detail"
},
{
"name": "Phase One XT",
"prompt": "Photograph of {prompt}, captured on a (Phase One XT)",
"negative_prompt": "studio camera, action, portrait, lack of detail, disconnected system"
},
{
"name": "Ricoh GR III",
"prompt": "Photograph of {prompt}, captured on a (Ricoh GR III)",
"negative_prompt": "soft , shaky , handheld images"
},
{
"name": "Ricoh GR III (Unique Steady Focus)",
"prompt": "Photograph of {prompt}, captured on a (Ricoh GR III)",
"negative_prompt": "soft , studio photography"
},
{
"name": "Ricoh GR III (Unique Variant)",
"prompt": "Photograph of {prompt}, captured on a (Ricoh GR III)",
"negative_prompt": "studio photography, softness"
},
{
"name": "Ricoh Theta Z1",
"prompt": "Photograph of {prompt}, captured on a (Ricoh Theta Z1)",
"negative_prompt": "photography, flat images, limited views"
},
{
"name": "Ricoh Theta Z1 (Unique Variant)",
"prompt": "Photograph of {prompt}, captured on a (Ricoh Theta Z1)",
"negative_prompt": "camera, flat images, non-VR, limited angles"
},
{
"name": "Sigma SD Quattro H",
"prompt": "Photograph of {prompt}, captured on a (Sigma SD Quattro H)",
"negative_prompt": "traditional sensor, blended color, soft"
},
{
"name": "Sigma fp",
"prompt": "Photograph of {prompt}, captured on a (Sigma fp)",
"negative_prompt": "limited versatility, soft images, jittery video"
},
{
"name": "Sigma fp (Unique Specific Variant)",
"prompt": "Photograph of {prompt}, captured on a (Sigma fp)",
"negative_prompt": "rigidity, limited scenarios"
},
{
"name": "Sigma fp (Unique Variant)",
"prompt": "Photograph of {prompt}, captured on a (Sigma fp )",
"negative_prompt": "cropped-frame, bulkiness, specialization, photo only, video only"
},
{
"name": "Sigma fp L",
"prompt": "Photograph of {prompt}, captured on a (Sigma fp L)",
"negative_prompt": "low resolution, limited creativity"
},
{
"name": "Sony A6000",
"prompt": "Photograph of {prompt}, captured on a (Sony A6000)",
"negative_prompt": "poor capture, studio photography, staged"
},
{
"name": "Sony A6400",
"prompt": "Photograph of {prompt}, captured on a (Sony A6400)",
"negative_prompt": "slowness, capture inaccuracy, still photography"
},
{
"name": "Sony A7R IV",
"prompt": "Photograph of {prompt}, captured on a (Sony A7R IV)",
"negative_prompt": "low resolution, limited range, lack of detail, portraits, casual snapfocus"
},
{
"name": "Sony A7S III",
"prompt": "Photograph of {prompt}, captured on a (Sony A7S III)",
"negative_prompt": "poor low-light, HD video, non-filmmakers, daytime photography"
},
{
"name": "Sony A9 II",
"prompt": "Photograph of {prompt}, captured on a (Sony A9 II)",
"negative_prompt": "poor capture, single shot, action"
},
{
"name": "Sony Alpha 1",
"prompt": "Photograph of {prompt}, captured on a (Sony Alpha 1)",
"negative_prompt": "entry-level, slow speed, amateur quality"
},
{
"name": "Sony Alpha 1 (Unique Variant)",
"prompt": "Photograph of {prompt}, captured on a (Sony Alpha 1)",
"negative_prompt": "amateur, still life, slow subjects, slow burst, imprecise capture"
},
{
"name": "Sony Alpha A7 III",
"prompt": "Photograph of {prompt}, captured on a (Sony Alpha A7 III)",
"negative_prompt": "overpriced, average quality images, unreliable performance, beginners, casual users"
},
{
"name": "Sony Alpha A9 II",
"prompt": "Photograph of {prompt}, captured on a (Sony Alpha A9 II)",
"negative_prompt": "amateur, slow shooting, unreliable capture, still life photography"
},
{
"name": "Sony Cyber-shot DSC-RX10 IV",
"prompt": "Photograph of {prompt}, captured on a (Sony Cyber-shot DSC-RX10 IV)",
"negative_prompt": "short zoom, poor video, portrait photography, close-up subjects"
},
{
"name": "Sony Cyber-shot DSC-W800",
"prompt": "Photograph of {prompt}, captured on a (Sony Cyber-shot DSC-W800)",
"negative_prompt": "professional-level, expensive, expert photographers, primary camera"
},
{
"name": "Sony Cyber-shot RX100 VII",
"prompt": "Photograph of {prompt}, captured on a (Sony Cyber-shot RX100 VII)",
"negative_prompt": "large-sized, limited zoom, studio work, specialized photography, compromise quality"
},
{
"name": "Sony RX10 IV",
"prompt": "Photograph of {prompt}, captured on a (Sony RX10 IV)",
"negative_prompt": "limited zoom, poor capture, close-up photography"
},
{
"name": "Sony RX100 VII",
"prompt": "Photograph of {prompt}, captured on a (Sony RX100 VII)",
"negative_prompt": "slow capture, limited zoom, images"
},
{
"name": "Sony RX100 VII (Unique Fast Capture)",
"prompt": "Photograph of {prompt}, captured on a (Sony RX100 VII)",
"negative_prompt": "budget, slow , basic capture, studio photography, static scenes"
},
{
"name": "Sony ZV-1",
"prompt": "Photograph of {prompt}, captured on a (Sony ZV-1)",
"negative_prompt": "general use, slow , poor capture, videos"
}
]
+57
View File
@@ -0,0 +1,57 @@
[
{
"name": "none by Composition",
"prompt": "{prompt}",
"negative_prompt": ""
},
{
"name": "Balance",
"prompt": "balance {prompt}",
"negative_prompt": "unbalanced"
},
{
"name": "Framing",
"prompt": "framing {prompt}",
"negative_prompt": "blocking"
},
{
"name": "LeadingLines",
"prompt": "leadinglines {prompt}",
"negative_prompt": "scattered"
},
{
"name": "NegativeSpace",
"prompt": "negativespace {prompt}",
"negative_prompt": "positivespace"
},
{
"name": "Pattern",
"prompt": "pattern {prompt}",
"negative_prompt": "random"
},
{
"name": "Perspective",
"prompt": "perspective {prompt}",
"negative_prompt": "flat"
},
{
"name": "RuleOfThirds",
"prompt": "ruleofthirds {prompt}",
"negative_prompt": "centered"
},
{
"name": "Simplicity",
"prompt": "simplicity {prompt}",
"negative_prompt": "complex"
},
{
"name": "Symmetry",
"prompt": "symmetry {prompt}",
"negative_prompt": "asymmetry"
},
{
"name": "Texture",
"prompt": "texture {prompt}",
"negative_prompt": "smooth"
}
]
+102
View File
@@ -0,0 +1,102 @@
[
{
"name": "None byDepth",
"prompt": "{prompt}",
"negative_prompt": ""
},
{
"name": "Architecture Depth of Field",
"prompt": "(f_stop 11.0), (focal_length 35.0) f/11, 24mm focal length {prompt}",
"negative_prompt": "(f_stop 1.2), (focal_length 14.0)"
},
{
"name": "Close-Up Depth of Field",
"prompt": "(f_stop 4.0), (focal_length 60.0) f/4, 60mm focal length {prompt}",
"negative_prompt": "(f_stop 1.2), (focal_length 14.0)"
},
{
"name": "Creative or Abstract Depth of Field",
"prompt": "(f_stop 2.0), (focal_length 50.0) f/2, 50mm focal length {prompt}",
"negative_prompt": "(f_stop 1.2), (focal_length 14.0)"
},
{
"name": "Deep Depth of Field",
"prompt": "(f_stop 11.0), (focal_length 18.0) f/11, 18mm focal length {prompt}",
"negative_prompt": "(f_stop 1.2), (focal_length 14.0)"
},
{
"name": "Environmental Portraits Depth of Field",
"prompt": "(f_stop 5.6), (focal_length 35.0) f/5.6, 35mm focal length {prompt}",
"negative_prompt": "(f_stop 1.2), (focal_length 14.0)"
},
{
"name": "Extreme Shallow Depth of Field",
"prompt": "(f_stop 1.2), (focal_length 85.0) f/1.2, 85mm focal length {prompt}",
"negative_prompt": "(f_stop 22.0), (focal_length 14.0)"
},
{
"name": "Landscape Depth of Field",
"prompt": "(f_stop 16.0), (focal_length 35.0) f/16, 18mm focal length {prompt}",
"negative_prompt": "(f_stop 1.2), (focal_length 14.0)"
},
{
"name": "Limited Depth of Field",
"prompt": "(f_stop None), (focal_length None) f/2.8, macro lens {prompt}",
"negative_prompt": "(f_stop None), (focal_length None)"
},
{
"name": "Macro Depth of Field",
"prompt": "(f_stop None), (focal_length None) f/8, macro lens {prompt}",
"negative_prompt": "(f_stop None), (focal_length None)"
},
{
"name": "Moderate Depth of Field",
"prompt": "(f_stop 5.6), (focal_length 28.0) f/5.6, 28mm focal length {prompt}",
"negative_prompt": "(f_stop 1.2), (focal_length 14.0)"
},
{
"name": "Moderate Shallow Depth of Field",
"prompt": "(f_stop 4.0), (focal_length 35.0) f/4, 35mm focal length {prompt}",
"negative_prompt": "(f_stop 1.2), (focal_length 14.0)"
},
{
"name": "Night Photography Depth of Field",
"prompt": "(f_stop 2.8), (focal_length 35.0) f/2.8, 35mm focal length {prompt}",
"negative_prompt": "(f_stop 1.2), (focal_length 14.0)"
},
{
"name": "Panoramic Depth of Field",
"prompt": "(f_stop None), (focal_length None) f/16, wide-angle lens {prompt}",
"negative_prompt": "(f_stop None), (focal_length None)"
},
{
"name": "Slightly Deep Depth of Field",
"prompt": "(f_stop 8.0), (focal_length 24.0) f/8, 24mm focal length {prompt}",
"negative_prompt": "(f_stop 1.2), (focal_length 14.0)"
},
{
"name": "Still Life Depth of Field",
"prompt": "(f_stop 5.6), (focal_length 50.0) f/5.6, 50mm focal length {prompt}",
"negative_prompt": "(f_stop 1.2), (focal_length 14.0)"
},
{
"name": "Street Photography Depth of Field",
"prompt": "(f_stop 8.0), (focal_length 85.0) f/8, 35mm focal length {prompt}",
"negative_prompt": "(f_stop 1.2), (focal_length 14.0)"
},
{
"name": "Subject in Motion Depth of Field",
"prompt": "(f_stop 4.0), (focal_length 24.0) f/4, 24mm focal length {prompt}",
"negative_prompt": "(f_stop 1.2), (focal_length 14.0)"
},
{
"name": "Very Deep Depth of Field",
"prompt": "(f_stop 16.0), (focal_length 14.0) f/16, 14mm focal length {prompt}",
"negative_prompt": "(f_stop 1.2), (focal_length 85.0)"
},
{
"name": "Very Shallow Depth of Field",
"prompt": "(f_stop 1.8), (focal_length 50.0) f/1.8, 50mm focal length {prompt}",
"negative_prompt": "(f_stop 1.2), (focal_length 14.0)"
}
]
+57
View File
@@ -0,0 +1,57 @@
[
{
"name": "none byEnvironment",
"prompt": "{prompt}",
"negative_prompt": ""
},
{
"name": "Beach",
"prompt": "beach {prompt}",
"negative_prompt": "forest"
},
{
"name": "Desert",
"prompt": "desert {prompt}",
"negative_prompt": "beach"
},
{
"name": "Forest",
"prompt": "forest {prompt}",
"negative_prompt": "city"
},
{
"name": "Indoor",
"prompt": "indoor {prompt}",
"negative_prompt": "outdoor"
},
{
"name": "Mountain",
"prompt": "mountain {prompt}",
"negative_prompt": "valley"
},
{
"name": "Outdoor",
"prompt": "outdoor {prompt}",
"negative_prompt": "indoor"
},
{
"name": "Rural",
"prompt": "rural {prompt}",
"negative_prompt": "urban"
},
{
"name": "Snow",
"prompt": "snow {prompt}",
"negative_prompt": "summer"
},
{
"name": "Studio",
"prompt": "studio {prompt}",
"negative_prompt": "indoor"
},
{
"name": "Urban",
"prompt": "urban {prompt}",
"negative_prompt": "rural"
}
]
+57
View File
@@ -0,0 +1,57 @@
[
{
"name": "No option",
"prompt": "{prompt}",
"negative_prompt": ""
},
{
"name": "BlackAndWhite",
"prompt": "blackandwhite {prompt}",
"negative_prompt": "color"
},
{
"name": "Contrast",
"prompt": "contrast {prompt}",
"negative_prompt": "brightness"
},
{
"name": "Cool",
"prompt": "cool {prompt}",
"negative_prompt": "warm"
},
{
"name": "HDR",
"prompt": "hdr {prompt}",
"negative_prompt": "ldr"
},
{
"name": "Monochrome",
"prompt": "monochrome {prompt}",
"negative_prompt": "colorful"
},
{
"name": "Saturated",
"prompt": "saturated {prompt}",
"negative_prompt": "dull"
},
{
"name": "Sepia",
"prompt": "sepia {prompt}",
"negative_prompt": "bright"
},
{
"name": "Vignette",
"prompt": "vignette {prompt}",
"negative_prompt": "none"
},
{
"name": "Vintage",
"prompt": "vintage {prompt}",
"negative_prompt": "modern"
},
{
"name": "Warm",
"prompt": "warm {prompt}",
"negative_prompt": "cool"
}
]
+447
View File
@@ -0,0 +1,447 @@
[
{
"name": "none byFocus",
"prompt": "{prompt} ",
"negative_prompt": ""
},
{
"name": "Extreme Shallow Depth of Field",
"prompt": "(f_stop 1.2), (focal_length 85.0) f/1.2, 85mm focal length {prompt}",
"negative_prompt": "(f_stop 1.2), (focal_length 85.0)"
},
{
"name": "Very Shallow Depth of Field",
"prompt": "(f_stop 1.8), (focal_length 50.0) f/1.8, 50mm focal length {prompt}",
"negative_prompt": "(f_stop 1.8), (focal_length 50.0)"
},
{
"name": "Night Photography Depth of Field",
"prompt": "(f_stop 2.8), (focal_length 35.0) f/2.8, 35mm focal length {prompt}",
"negative_prompt": "(f_stop 2.8), (focal_length 35.0)"
},
{
"name": "Moderate Shallow Depth of Field",
"prompt": "(f_stop 4.0), (focal_length 35.0) f/4, 35mm focal length {prompt}",
"negative_prompt": "(f_stop 4.0), (focal_length 35.0)"
},
{
"name": "Moderate Depth of Field",
"prompt": "(f_stop 5.6), (focal_length 28.0) f/5.6, 28mm focal length {prompt}",
"negative_prompt": "(f_stop 5.6), (focal_length 28.0)"
},
{
"name": "Slightly Deep Depth of Field",
"prompt": "(f_stop 8.0), (focal_length 24.0) f/8, 24mm focal length {prompt}",
"negative_prompt": "(f_stop 8.0), (focal_length 24.0)"
},
{
"name": "Deep Depth of Field",
"prompt": "(f_stop 11.0), (focal_length 18.0) f/11, 18mm focal length {prompt}",
"negative_prompt": "(f_stop 11.0), (focal_length 18.0)"
},
{
"name": "Very Deep Depth of Field",
"prompt": "(f_stop 16.0), (focal_length 14.0) f/16, 14mm focal length {prompt}",
"negative_prompt": "(f_stop 16.0), (focal_length 14.0)"
},
{
"name": "Hyperfocal Distance",
"prompt": "(f_stop 22.0), (focal_length 85.0) f/22, 14mm focal length {prompt}",
"negative_prompt": "(f_stop 22.0), (focal_length 85.0)"
},
{
"name": "Selective Focus",
"prompt": "(f_stop 3.5), (focal_length 40.0) f/3.5, 40mm focal length / (Selective Focus) {prompt} / (f_stop 2.8), (focal_length 50.0)",
"negative_prompt": "(f_stop 3.5), (focal_length 40.0) / (Selective Focus) / (f_stop 16), (focal_length 24)"
},
{
"name": "Bokeh Effect",
"prompt": "(f_stop 1.4), (focal_length 50.0) f/1.4, 50mm focal length {prompt}",
"negative_prompt": "(f_stop 1.4), (focal_length 50.0)"
},
{
"name": "Tilt-Shift Photography",
"prompt": "(f_stop None), (focal_length None) f/4, special tilt-shift lens {prompt}",
"negative_prompt": "(f_stop None), (focal_length None)"
},
{
"name": "Macro Depth of Field",
"prompt": "(f_stop None), (focal_length None) f/8, macro lens {prompt}",
"negative_prompt": "(f_stop None), (focal_length None)"
},
{
"name": "Landscape Depth of Field",
"prompt": "(f_stop 16.0), (focal_length 35.0) f/16, 18mm focal length {prompt}",
"negative_prompt": "(f_stop 16.0), (focal_length 35.0)"
},
{
"name": "Limited Depth of Field",
"prompt": "(f_stop None), (focal_length None) f/2.8, macro lens {prompt}",
"negative_prompt": "(f_stop None), (focal_length None)"
},
{
"name": "Environmental Portraits Depth of Field",
"prompt": "(f_stop 5.6), (focal_length 35.0) f/5.6, 35mm focal length {prompt}",
"negative_prompt": "(f_stop 5.6), (focal_length 35.0)"
},
{
"name": "Close-Up Depth of Field",
"prompt": "(f_stop 4.0), (focal_length 60.0) f/4, 60mm focal length {prompt}",
"negative_prompt": "(f_stop 4.0), (focal_length 60.0)"
},
{
"name": "Street Photography Depth of Field",
"prompt": "(f_stop 8.0), (focal_length 85.0) f/8, 35mm focal length {prompt}",
"negative_prompt": "(f_stop 8.0), (focal_length 85.0)"
},
{
"name": "Subject in Motion Depth of Field",
"prompt": "(f_stop 4.0), (focal_length 24.0) f/4, 24mm focal length {prompt}",
"negative_prompt": "(f_stop 4.0), (focal_length 24.0)"
},
{
"name": "Architecture Depth of Field",
"prompt": "(f_stop 11.0), (focal_length 35.0) f/11, 24mm focal length {prompt}",
"negative_prompt": "(f_stop 11.0), (focal_length 35.0)"
},
{
"name": "Panoramic Depth of Field",
"prompt": "(f_stop None), (focal_length None) f/16, wide-angle lens {prompt}",
"negative_prompt": "(f_stop None), (focal_length None)"
},
{
"name": "Still Life Depth of Field",
"prompt": "(f_stop 5.6), (focal_length 50.0) f/5.6, 50mm focal length {prompt}",
"negative_prompt": "(f_stop 5.6), (focal_length 50.0)"
},
{
"name": "Creative or Abstract Depth of Field",
"prompt": "(f_stop 2.0), (focal_length 50.0) f/2, 50mm focal length {prompt}",
"negative_prompt": "(f_stop 2.0), (focal_length 50.0)"
},
{
"name": "Focus Distance 0.5m",
"prompt": "(Subject 0.5m away in sharp focus) (Distance 0.5m away) {prompt}",
"negative_prompt": "Subjects 9.5m away"
},
{
"name": "Focus Distance 1.0m",
"prompt": "(Subject 1.0m away in sharp focus) (Distance 1.0m away) {prompt}",
"negative_prompt": "Subjects 9.0m away"
},
{
"name": "Focus Distance 1.5m",
"prompt": "(Subject 1.5m away in sharp focus) (Distance 1.5m away) {prompt}",
"negative_prompt": "Subjects 8.5m away"
},
{
"name": "Focus Distance 2.0m",
"prompt": "(Subject 2.0m away in sharp focus) (Distance 2.0m away) {prompt}",
"negative_prompt": "Subjects 8.0m away"
},
{
"name": "Focus Distance 2.5m",
"prompt": "(Subject 2.5m away in sharp focus) (Distance 2.5m away) {prompt}",
"negative_prompt": "Subjects 7.5m away"
},
{
"name": "Focus Distance 3.0m",
"prompt": "(Subject 3.0m away in sharp focus) (Distance 3.0m away) {prompt}",
"negative_prompt": "Subjects 7.0m away"
},
{
"name": "Focus Distance 3.5m",
"prompt": "(Subject 3.5m away in sharp focus) (Distance 3.5m away) {prompt}",
"negative_prompt": "Subjects 6.5m away"
},
{
"name": "Focus Distance 4.0m",
"prompt": "(Subject 4.0m away in sharp focus) (Distance 4.0m away) {prompt}",
"negative_prompt": "Subjects 6.0m away"
},
{
"name": "Focus Distance 4.5m",
"prompt": "(Subject 4.5m away in sharp focus) (Distance 4.5m away) {prompt}",
"negative_prompt": "Subjects 5.5m away"
},
{
"name": "Focus Distance 5.0m",
"prompt": "(Subject 5.0m away in sharp focus) (Distance 5.0m away) {prompt}",
"negative_prompt": "Subjects 5.0m away"
},
{
"name": "Focus Distance 5.5m",
"prompt": "(Subject 5.5m away in sharp focus) (Distance 5.5m away) {prompt}",
"negative_prompt": "Subjects 4.5m away"
},
{
"name": "Focus Distance 6.0m",
"prompt": "(Subject 6.0m away in sharp focus) (Distance 6.0m away) {prompt}",
"negative_prompt": "Subjects 4.0m away"
},
{
"name": "Focus Distance 6.5m",
"prompt": "(Subject 6.5m away in sharp focus) (Distance 6.5m away) {prompt}",
"negative_prompt": "Subjects 3.5m away"
},
{
"name": "Focus Distance 7.0m",
"prompt": "(Subject 7.0m away in sharp focus) (Distance 7.0m away) {prompt}",
"negative_prompt": "Subjects 3.0m away"
},
{
"name": "Focus Distance 7.5m",
"prompt": "(Subject 7.5m away in sharp focus) (Distance 7.5m away) {prompt}",
"negative_prompt": "Subjects 2.5m away"
},
{
"name": "Focus Distance 8.0m",
"prompt": "(Subject 8.0m away in sharp focus) (Distance 8.0m away) {prompt}",
"negative_prompt": "Subjects 2.0m away"
},
{
"name": "Focus Distance 8.5m",
"prompt": "(Subject 8.5m away in sharp focus) (Distance 8.5m away) {prompt}",
"negative_prompt": "Subjects 1.5m away"
},
{
"name": "Focus Distance 9.0m",
"prompt": "(Subject 9.0m away in sharp focus) (Distance 9.0m away) {prompt}",
"negative_prompt": "Subjects 1.0m away"
},
{
"name": "Focus Distance 9.5m",
"prompt": "(Subject 9.5m away in sharp focus) (Distance 9.5m away) {prompt}",
"negative_prompt": "Subjects 0.5m away"
},
{
"name": "Focus Distance 10.0m",
"prompt": "(Subject 10.0m away in sharp focus) (Distance 10.0m away) {prompt}",
"negative_prompt": "Subjects 0.0m away"
},
{
"name": "10% Focus Area",
"prompt": "(10% of the image in sharp focus) (10% of image) {prompt}",
"negative_prompt": "90% focus area"
},
{
"name": "20% Focus Area",
"prompt": "(20% of the image in sharp focus) (20% of image) {prompt}",
"negative_prompt": "80% focus area"
},
{
"name": "30% Focus Area",
"prompt": "(30% of the image in sharp focus) (30% of image) {prompt}",
"negative_prompt": "70% focus area"
},
{
"name": "40% Focus Area",
"prompt": "(40% of the image in sharp focus) (40% of image) {prompt}",
"negative_prompt": "60% focus area"
},
{
"name": "50% Focus Area",
"prompt": "(50% of the image in sharp focus) (50% of image) {prompt}",
"negative_prompt": "50% focus area"
},
{
"name": "60% Focus Area",
"prompt": "(60% of the image in sharp focus) (60% of image) {prompt}",
"negative_prompt": "40% focus area"
},
{
"name": "70% Focus Area",
"prompt": "(70% of the image in sharp focus) (70% of image) {prompt}",
"negative_prompt": "30% focus area"
},
{
"name": "80% Focus Area",
"prompt": "(80% of the image in sharp focus) (80% of image) {prompt}",
"negative_prompt": "20% focus area"
},
{
"name": "90% Focus Area",
"prompt": "(90% of the image in sharp focus) (90% of image) {prompt}",
"negative_prompt": "10% focus area"
},
{
"name": "100% Focus Area",
"prompt": "(100% of the image in sharp focus) (100% of image) {prompt}",
"negative_prompt": "0% focus area"
},
{
"name": "Manual Focus",
"prompt": "(Using manual focus) (manual focus technique) {prompt}",
"negative_prompt": "Using other than manual focus"
},
{
"name": "Autofocus",
"prompt": "(Using autofocus) (autofocus technique) {prompt}",
"negative_prompt": "Using other than autofocus"
},
{
"name": "Focus Stacking",
"prompt": "(Using focus stacking) (focus stacking technique) {prompt}",
"negative_prompt": "Using other than focus stacking"
},
{
"name": "Back-Button Focus",
"prompt": "(Using back-button focus) (back-button focus technique) {prompt}",
"negative_prompt": "Using other than back-button focus"
},
{
"name": "Focus Bracketing",
"prompt": "(Using focus bracketing) (focus bracketing technique) {prompt}",
"negative_prompt": "Using other than focus bracketing"
},
{
"name": "Selective Focus",
"prompt": "(Selective Focus) {prompt} / (f_stop 2.8), (focal_length 50.0)",
"negative_prompt": "(Selective Focus) / (f_stop 16), (focal_length 24)"
},
{
"name": "Deep Focus",
"prompt": "(Deep Focus) {prompt} / (f_stop 16.0), (focal_length 24.0)",
"negative_prompt": "(Deep Focus) / (f_stop 1.8), (focal_length 85)"
},
{
"name": "Soft Focus",
"prompt": "(Soft Focus) {prompt} / (f_stop 1.8), (focal_length 85.0)",
"negative_prompt": "(Soft Focus) / (f_stop 16), (focal_length 24)"
},
{
"name": "Macro Focus",
"prompt": "(Macro Focus) {prompt}",
"negative_prompt": "(Macro Focus)"
},
{
"name": "Infinity Focus",
"prompt": "(Infinity Focus) {prompt}",
"negative_prompt": "(Infinity Focus)"
},
{
"name": "Zone Focus",
"prompt": "(Zone Focus) {prompt}",
"negative_prompt": "(Zone Focus)"
},
{
"name": "Edge-to-edge Focus",
"prompt": "(Edge-to-edge Focus) {prompt}",
"negative_prompt": "(Edge-to-edge Focus)"
},
{
"name": "Foreground Focus",
"prompt": "(Foreground Focus) {prompt}",
"negative_prompt": "(Foreground Focus)"
},
{
"name": "Background Focus",
"prompt": "(Background Focus) {prompt}",
"negative_prompt": "(Background Focus)"
},
{
"name": "Central Focus",
"prompt": "(Central Focus) {prompt}",
"negative_prompt": "(Central Focus)"
},
{
"name": "Corner Focus",
"prompt": "(Corner Focus) {prompt}",
"negative_prompt": "(Corner Focus)"
},
{
"name": "Top Focus",
"prompt": "(Top Focus) {prompt}",
"negative_prompt": "(Top Focus)"
},
{
"name": "Bottom Focus",
"prompt": "(Bottom Focus) {prompt}",
"negative_prompt": "(Bottom Focus)"
},
{
"name": "Right Focus",
"prompt": "(Right Focus) {prompt}",
"negative_prompt": "(Right Focus)"
},
{
"name": "Left Focus",
"prompt": "(Left Focus) {prompt}",
"negative_prompt": "(Left Focus)"
},
{
"name": "Rack Focus",
"prompt": "(Rack Focus) {prompt}",
"negative_prompt": "(Rack Focus)"
},
{
"name": "Pull Focus",
"prompt": "(Pull Focus) {prompt}",
"negative_prompt": "(Pull Focus)"
},
{
"name": "Rolling Focus",
"prompt": "(Rolling Focus) {prompt}",
"negative_prompt": "(Rolling Focus)"
},
{
"name": "Tilt-shift Focus",
"prompt": "(Tilt-shift Focus) {prompt}",
"negative_prompt": "(Tilt-shift Focus)"
},
{
"name": "Fly-by Focus",
"prompt": "(Fly-by Focus) {prompt}",
"negative_prompt": "(Fly-by Focus)"
},
{
"name": "Follow Focus",
"prompt": "(Follow Focus) {prompt}",
"negative_prompt": "(Follow Focus)"
},
{
"name": "Zoom Focus",
"prompt": "(Zoom Focus) {prompt}",
"negative_prompt": "(Zoom Focus)"
},
{
"name": "Dolly Focus",
"prompt": "(Dolly Focus) {prompt}",
"negative_prompt": "(Dolly Focus)"
},
{
"name": "Pan Focus",
"prompt": "(Pan Focus) {prompt}",
"negative_prompt": "(Pan Focus)"
},
{
"name": "Tilt Focus",
"prompt": "(Tilt Focus) {prompt}",
"negative_prompt": "(Tilt Focus)"
},
{
"name": "Whip Focus",
"prompt": "(Whip Focus) {prompt}",
"negative_prompt": "(Whip Focus)"
},
{
"name": "Slide Focus",
"prompt": "(Slide Focus) {prompt}",
"negative_prompt": "(Slide Focus)"
},
{
"name": "Crane Focus",
"prompt": "(Crane Focus) {prompt}",
"negative_prompt": "(Crane Focus)"
},
{
"name": "Swing Focus",
"prompt": "(Swing Focus) {prompt}",
"negative_prompt": "(Swing Focus)"
},
{
"name": "Drone Focus",
"prompt": "(Drone Focus) {prompt}",
"negative_prompt": "(Drone Focus)"
}
]
File diff suppressed because it is too large Load Diff
+57
View File
@@ -0,0 +1,57 @@
[
{
"name": "none byLighting",
"prompt": "{prompt}",
"negative_prompt": ""
},
{
"name": "Ambient",
"prompt": "ambient {prompt}",
"negative_prompt": "spotlight"
},
{
"name": "Artificial",
"prompt": "artificial {prompt}",
"negative_prompt": "natural"
},
{
"name": "Backlit",
"prompt": "backlit {prompt}",
"negative_prompt": "frontlit"
},
{
"name": "Diffused",
"prompt": "diffused {prompt}",
"negative_prompt": "direct"
},
{
"name": "Flash",
"prompt": "flash {prompt}",
"negative_prompt": "natural"
},
{
"name": "Harsh",
"prompt": "harsh {prompt}",
"negative_prompt": "soft"
},
{
"name": "Natural",
"prompt": "natural {prompt}",
"negative_prompt": "artificial"
},
{
"name": "SideLit",
"prompt": "sidelit {prompt}",
"negative_prompt": "backlit"
},
{
"name": "Soft",
"prompt": "soft {prompt}",
"negative_prompt": "harsh"
},
{
"name": "Spotlight",
"prompt": "spotlight {prompt}",
"negative_prompt": "ambient"
}
]
+7607
View File
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+57
View File
@@ -0,0 +1,57 @@
[
{
"name": "none byMood",
"prompt": "{prompt}",
"negative_prompt": ""
},
{
"name": "Aggressive",
"prompt": "aggressive {prompt}",
"negative_prompt": "calm"
},
{
"name": "Calm",
"prompt": "calm {prompt}",
"negative_prompt": "energetic"
},
{
"name": "Chaotic",
"prompt": "chaotic {prompt}",
"negative_prompt": "serene"
},
{
"name": "Energetic",
"prompt": "energetic {prompt}",
"negative_prompt": "relaxed"
},
{
"name": "Happy",
"prompt": "happy {prompt}",
"negative_prompt": "sad"
},
{
"name": "Mysterious",
"prompt": "mysterious {prompt}",
"negative_prompt": "clear"
},
{
"name": "Relaxed",
"prompt": "relaxed {prompt}",
"negative_prompt": "excited"
},
{
"name": "Romantic",
"prompt": "romantic {prompt}",
"negative_prompt": "depressed"
},
{
"name": "Sad",
"prompt": "sad {prompt}",
"negative_prompt": "happy"
},
{
"name": "Serene",
"prompt": "serene {prompt}",
"negative_prompt": "chaotic"
}
]
+522
View File
@@ -0,0 +1,522 @@
[
{
"name": "none byOriginal",
"prompt": "{prompt}",
"negative_prompt": ""
},
{
"name": "sai-3d-model",
"prompt": "professional 3d model {prompt} . octane render, highly detailed, volumetric, dramatic lighting",
"negative_prompt": "ugly, deformed, noisy, low poly, blurry, painting"
},
{
"name": "sai-analog film",
"prompt": "analog film photo {prompt} . faded film, desaturated, 35mm photo, grainy, vignette, vintage, Kodachrome, Lomography, stained, highly detailed, found footage",
"negative_prompt": "painting, drawing, illustration, glitch, deformed, mutated, cross-eyed, ugly, disfigured"
},
{
"name": "sai-anime",
"prompt": "anime artwork {prompt} . anime style, key visual, vibrant, studio anime, highly detailed",
"negative_prompt": "photo, deformed, black and white, realism, disfigured, low contrast"
},
{
"name": "sai-cinematic",
"prompt": "cinematic film still {prompt} . shallow depth of field, vignette, highly detailed, high budget, bokeh, cinemascope, moody, epic, gorgeous, film grain, grainy",
"negative_prompt": "anime, cartoon, graphic, text, painting, crayon, graphite, abstract, glitch, deformed, mutated, ugly, disfigured"
},
{
"name": "sai-comic book",
"prompt": "comic {prompt} . graphic illustration, comic art, graphic novel art, vibrant, highly detailed",
"negative_prompt": "photograph, deformed, glitch, noisy, realistic, stock photo"
},
{
"name": "sai-craft clay",
"prompt": "play-doh style {prompt} . sculpture, clay art, centered composition, Claymation",
"negative_prompt": "sloppy, messy, grainy, highly detailed, ultra textured, photo"
},
{
"name": "sai-digital art",
"prompt": "concept art {prompt} . digital artwork, illustrative, painterly, matte painting, highly detailed",
"negative_prompt": "photo, photorealistic, realism, ugly"
},
{
"name": "sai-enhance",
"prompt": "breathtaking {prompt} . award-winning, professional, highly detailed",
"negative_prompt": "ugly, deformed, noisy, blurry, distorted, grainy"
},
{
"name": "sai-fantasy art",
"prompt": "ethereal fantasy concept art of {prompt} . magnificent, celestial, ethereal, painterly, epic, majestic, magical, fantasy art, cover art, dreamy",
"negative_prompt": "photographic, realistic, realism, 35mm film, dslr, cropped, frame, text, deformed, glitch, noise, noisy, off-center, deformed, cross-eyed, closed eyes, bad anatomy, ugly, disfigured, sloppy, duplicate, mutated, black and white"
},
{
"name": "sai-isometric",
"prompt": "isometric style {prompt} . vibrant, beautiful, crisp, detailed, ultra detailed, intricate",
"negative_prompt": "deformed, mutated, ugly, disfigured, blur, blurry, noise, noisy, realistic, photographic"
},
{
"name": "sai-line art",
"prompt": "line art drawing {prompt} . professional, sleek, modern, minimalist, graphic, line art, vector graphics",
"negative_prompt": "anime, photorealistic, 35mm film, deformed, glitch, blurry, noisy, off-center, deformed, cross-eyed, closed eyes, bad anatomy, ugly, disfigured, mutated, realism, realistic, impressionism, expressionism, oil, acrylic"
},
{
"name": "sai-lowpoly",
"prompt": "low-poly style {prompt} . low-poly game art, polygon mesh, jagged, blocky, wireframe edges, centered composition",
"negative_prompt": "noisy, sloppy, messy, grainy, highly detailed, ultra textured, photo"
},
{
"name": "sai-neonpunk",
"prompt": "neonpunk style {prompt} . cyberpunk, vaporwave, neon, vibes, vibrant, stunningly beautiful, crisp, detailed, sleek, ultramodern, magenta highlights, dark purple shadows, high contrast, cinematic, ultra detailed, intricate, professional",
"negative_prompt": "painting, drawing, illustration, glitch, deformed, mutated, cross-eyed, ugly, disfigured"
},
{
"name": "sai-origami",
"prompt": "origami style {prompt} . paper art, pleated paper, folded, origami art, pleats, cut and fold, centered composition",
"negative_prompt": "noisy, sloppy, messy, grainy, highly detailed, ultra textured, photo"
},
{
"name": "sai-photographic",
"prompt": "cinematic photo {prompt} . 35mm photograph, film, bokeh, professional, 4k, highly detailed",
"negative_prompt": "drawing, painting, crayon, sketch, graphite, impressionist, noisy, blurry, soft, deformed, ugly"
},
{
"name": "sai-pixel art",
"prompt": "pixel-art {prompt} . low-res, blocky, pixel art style, 8-bit graphics",
"negative_prompt": "sloppy, messy, blurry, noisy, highly detailed, ultra textured, photo, realistic"
},
{
"name": "sai-texture",
"prompt": "texture {prompt} top down close-up",
"negative_prompt": "ugly, deformed, noisy, blurry"
},
{
"name": "ads-advertising",
"prompt": "Advertising poster style {prompt} . Professional, modern, product-focused, commercial, eye-catching, highly detailed",
"negative_prompt": "noisy, blurry, amateurish, sloppy, unattractive"
},
{
"name": "ads-automotive",
"prompt": "Automotive advertisement style {prompt} . Sleek, dynamic, professional, commercial, vehicle-focused, high-resolution, highly detailed",
"negative_prompt": "noisy, blurry, unattractive, sloppy, unprofessional"
},
{
"name": "ads-corporate",
"prompt": "Corporate branding style {prompt} . Professional, clean, modern, sleek, minimalist, business-oriented, highly detailed",
"negative_prompt": "noisy, blurry, grungy, sloppy, cluttered, disorganized"
},
{
"name": "ads-fashion editorial",
"prompt": "Fashion editorial style {prompt} . High fashion, trendy, stylish, editorial, magazine style, professional, highly detailed",
"negative_prompt": "outdated, blurry, noisy, unattractive, sloppy"
},
{
"name": "ads-food photography",
"prompt": "Food photography style {prompt} . Appetizing, professional, culinary, high-resolution, commercial, highly detailed",
"negative_prompt": "unappetizing, sloppy, unprofessional, noisy, blurry"
},
{
"name": "ads-luxury",
"prompt": "Luxury product style {prompt} . Elegant, sophisticated, high-end, luxurious, professional, highly detailed",
"negative_prompt": "cheap, noisy, blurry, unattractive, amateurish"
},
{
"name": "ads-real estate",
"prompt": "Real estate photography style {prompt} . Professional, inviting, well-lit, high-resolution, property-focused, commercial, highly detailed",
"negative_prompt": "dark, blurry, unappealing, noisy, unprofessional"
},
{
"name": "ads-retail",
"prompt": "Retail packaging style {prompt} . Vibrant, enticing, commercial, product-focused, eye-catching, professional, highly detailed",
"negative_prompt": "noisy, blurry, amateurish, sloppy, unattractive"
},
{
"name": "artstyle-abstract",
"prompt": "abstract style {prompt} . non-representational, colors and shapes, expression of feelings, imaginative, highly detailed",
"negative_prompt": "realistic, photographic, figurative, concrete"
},
{
"name": "artstyle-abstract expressionism",
"prompt": "abstract expressionist painting {prompt} . energetic brushwork, bold colors, abstract forms, expressive, emotional",
"negative_prompt": "realistic, photorealistic, low contrast, plain, simple, monochrome"
},
{
"name": "artstyle-art deco",
"prompt": "Art Deco style {prompt} . geometric shapes, bold colors, luxurious, elegant, decorative, symmetrical, ornate, detailed",
"negative_prompt": "ugly, deformed, noisy, blurry, low contrast, realism, photorealistic, modernist, minimalist"
},
{
"name": "artstyle-art nouveau",
"prompt": "Art Nouveau style {prompt} . elegant, decorative, curvilinear forms, nature-inspired, ornate, detailed",
"negative_prompt": "ugly, deformed, noisy, blurry, low contrast, realism, photorealistic, modernist, minimalist"
},
{
"name": "artstyle-constructivist",
"prompt": "constructivist style {prompt} . geometric shapes, bold colors, dynamic composition, propaganda art style",
"negative_prompt": "realistic, photorealistic, low contrast, plain, simple, abstract expressionism"
},
{
"name": "artstyle-cubist",
"prompt": "cubist artwork {prompt} . geometric shapes, abstract, innovative, revolutionary",
"negative_prompt": "anime, photorealistic, 35mm film, deformed, glitch, low contrast, noisy"
},
{
"name": "artstyle-expressionist",
"prompt": "expressionist {prompt} . raw, emotional, dynamic, distortion for emotional effect, vibrant, use of unusual colors, detailed",
"negative_prompt": "realism, symmetry, quiet, calm, photo"
},
{
"name": "artstyle-graffiti",
"prompt": "graffiti style {prompt} . street art, vibrant, urban, detailed, tag, mural",
"negative_prompt": "ugly, deformed, noisy, blurry, low contrast, realism, photorealistic"
},
{
"name": "artstyle-hyperrealism",
"prompt": "hyperrealistic art {prompt} . extremely high-resolution details, photographic, realism pushed to extreme, fine texture, incredibly lifelike",
"negative_prompt": "simplified, abstract, unrealistic, impressionistic, low resolution"
},
{
"name": "artstyle-impressionist",
"prompt": "impressionist painting {prompt} . loose brushwork, vibrant color, light and shadow play, captures feeling over form",
"negative_prompt": "anime, photorealistic, 35mm film, deformed, glitch, low contrast, noisy"
},
{
"name": "artstyle-pointillism",
"prompt": "pointillism style {prompt} . composed entirely of small, distinct dots of color, vibrant, highly detailed",
"negative_prompt": "line drawing, smooth shading, large color fields, simplistic"
},
{
"name": "artstyle-pop art",
"prompt": "Pop Art style {prompt} . bright colors, bold outlines, popular culture themes, ironic or kitsch",
"negative_prompt": "ugly, deformed, noisy, blurry, low contrast, realism, photorealistic, minimalist"
},
{
"name": "artstyle-psychedelic",
"prompt": "psychedelic style {prompt} . vibrant colors, swirling patterns, abstract forms, surreal, trippy",
"negative_prompt": "monochrome, black and white, low contrast, realistic, photorealistic, plain, simple"
},
{
"name": "artstyle-renaissance",
"prompt": "Renaissance style {prompt} . realistic, perspective, light and shadow, religious or mythological themes, highly detailed",
"negative_prompt": "ugly, deformed, noisy, blurry, low contrast, modernist, minimalist, abstract"
},
{
"name": "artstyle-steampunk",
"prompt": "steampunk style {prompt} . antique, mechanical, brass and copper tones, gears, intricate, detailed",
"negative_prompt": "deformed, glitch, noisy, low contrast, anime, photorealistic"
},
{
"name": "artstyle-surrealist",
"prompt": "surrealist art {prompt} . dreamlike, mysterious, provocative, symbolic, intricate, detailed",
"negative_prompt": "anime, photorealistic, realistic, deformed, glitch, noisy, low contrast"
},
{
"name": "artstyle-typography",
"prompt": "typographic art {prompt} . stylized, intricate, detailed, artistic, text-based",
"negative_prompt": "ugly, deformed, noisy, blurry, low contrast, realism, photorealistic"
},
{
"name": "artstyle-watercolor",
"prompt": "watercolor painting {prompt} . vibrant, beautiful, painterly, detailed, textural, artistic",
"negative_prompt": "anime, photorealistic, 35mm film, deformed, glitch, low contrast, noisy"
},
{
"name": "futuristic-biomechanical",
"prompt": "biomechanical style {prompt} . blend of organic and mechanical elements, futuristic, cybernetic, detailed, intricate",
"negative_prompt": "natural, rustic, primitive, organic, simplistic"
},
{
"name": "futuristic-biomechanical cyberpunk",
"prompt": "biomechanical cyberpunk {prompt} . cybernetics, human-machine fusion, dystopian, organic meets artificial, dark, intricate, highly detailed",
"negative_prompt": "natural, colorful, deformed, sketch, low contrast, watercolor"
},
{
"name": "futuristic-cybernetic",
"prompt": "cybernetic style {prompt} . futuristic, technological, cybernetic enhancements, robotics, artificial intelligence themes",
"negative_prompt": "ugly, deformed, noisy, blurry, low contrast, realism, photorealistic, historical, medieval"
},
{
"name": "futuristic-cybernetic robot",
"prompt": "cybernetic robot {prompt} . android, AI, machine, metal, wires, tech, futuristic, highly detailed",
"negative_prompt": "organic, natural, human, sketch, watercolor, low contrast"
},
{
"name": "futuristic-cyberpunk cityscape",
"prompt": "cyberpunk cityscape {prompt} . neon lights, dark alleys, skyscrapers, futuristic, vibrant colors, high contrast, highly detailed",
"negative_prompt": "natural, rural, deformed, low contrast, black and white, sketch, watercolor"
},
{
"name": "futuristic-futuristic",
"prompt": "futuristic style {prompt} . sleek, modern, ultramodern, high tech, detailed",
"negative_prompt": "ugly, deformed, noisy, blurry, low contrast, realism, photorealistic, vintage, antique"
},
{
"name": "futuristic-retro cyberpunk",
"prompt": "retro cyberpunk {prompt} . 80's inspired, synthwave, neon, vibrant, detailed, retro futurism",
"negative_prompt": "modern, desaturated, black and white, realism, low contrast"
},
{
"name": "futuristic-retro futurism",
"prompt": "retro-futuristic {prompt} . vintage sci-fi, 50s and 60s style, atomic age, vibrant, highly detailed",
"negative_prompt": "contemporary, realistic, rustic, primitive"
},
{
"name": "futuristic-sci-fi",
"prompt": "sci-fi style {prompt} . futuristic, technological, alien worlds, space themes, advanced civilizations",
"negative_prompt": "ugly, deformed, noisy, blurry, low contrast, realism, photorealistic, historical, medieval"
},
{
"name": "futuristic-vaporwave",
"prompt": "vaporwave style {prompt} . retro aesthetic, cyberpunk, vibrant, neon colors, vintage 80s and 90s style, highly detailed",
"negative_prompt": "monochrome, muted colors, realism, rustic, minimalist, dark"
},
{
"name": "game-bubble bobble",
"prompt": "Bubble Bobble style {prompt} . 8-bit, cute, pixelated, fantasy, vibrant, reminiscent of Bubble Bobble game",
"negative_prompt": "realistic, modern, photorealistic, violent, horror"
},
{
"name": "game-cyberpunk game",
"prompt": "cyberpunk game style {prompt} . neon, dystopian, futuristic, digital, vibrant, detailed, high contrast, reminiscent of cyberpunk genre video games",
"negative_prompt": "historical, natural, rustic, low detailed"
},
{
"name": "game-fighting game",
"prompt": "fighting game style {prompt} . dynamic, vibrant, action-packed, detailed character design, reminiscent of fighting video games",
"negative_prompt": "peaceful, calm, minimalist, photorealistic"
},
{
"name": "game-gta",
"prompt": "GTA-style artwork {prompt} . satirical, exaggerated, pop art style, vibrant colors, iconic characters, action-packed",
"negative_prompt": "realistic, black and white, low contrast, impressionist, cubist, noisy, blurry, deformed"
},
{
"name": "game-mario",
"prompt": "Super Mario style {prompt} . vibrant, cute, cartoony, fantasy, playful, reminiscent of Super Mario series",
"negative_prompt": "realistic, modern, horror, dystopian, violent"
},
{
"name": "game-minecraft",
"prompt": "Minecraft style {prompt} . blocky, pixelated, vibrant colors, recognizable characters and objects, game assets",
"negative_prompt": "smooth, realistic, detailed, photorealistic, noise, blurry, deformed"
},
{
"name": "game-pokemon",
"prompt": "Pokémon style {prompt} . vibrant, cute, anime, fantasy, reminiscent of Pokémon series",
"negative_prompt": "realistic, modern, horror, dystopian, violent"
},
{
"name": "game-retro arcade",
"prompt": "retro arcade style {prompt} . 8-bit, pixelated, vibrant, classic video game, old school gaming, reminiscent of 80s and 90s arcade games",
"negative_prompt": "modern, ultra-high resolution, photorealistic, 3D"
},
{
"name": "game-retro game",
"prompt": "retro game art {prompt} . 16-bit, vibrant colors, pixelated, nostalgic, charming, fun",
"negative_prompt": "realistic, photorealistic, 35mm film, deformed, glitch, low contrast, noisy"
},
{
"name": "game-rpg fantasy game",
"prompt": "role-playing game (RPG) style fantasy {prompt} . detailed, vibrant, immersive, reminiscent of high fantasy RPG games",
"negative_prompt": "sci-fi, modern, urban, futuristic, low detailed"
},
{
"name": "game-strategy game",
"prompt": "strategy game style {prompt} . overhead view, detailed map, units, reminiscent of real-time strategy video games",
"negative_prompt": "first-person view, modern, photorealistic"
},
{
"name": "game-streetfighter",
"prompt": "Street Fighter style {prompt} . vibrant, dynamic, arcade, 2D fighting game, highly detailed, reminiscent of Street Fighter series",
"negative_prompt": "3D, realistic, modern, photorealistic, turn-based strategy"
},
{
"name": "game-zelda",
"prompt": "Legend of Zelda style {prompt} . vibrant, fantasy, detailed, epic, heroic, reminiscent of The Legend of Zelda series",
"negative_prompt": "sci-fi, modern, realistic, horror"
},
{
"name": "misc-architectural",
"prompt": "architectural style {prompt} . clean lines, geometric shapes, minimalist, modern, architectural drawing, highly detailed",
"negative_prompt": "curved lines, ornate, baroque, abstract, grunge"
},
{
"name": "misc-disco",
"prompt": "disco-themed {prompt} . vibrant, groovy, retro 70s style, shiny disco balls, neon lights, dance floor, highly detailed",
"negative_prompt": "minimalist, rustic, monochrome, contemporary, simplistic"
},
{
"name": "misc-dreamscape",
"prompt": "dreamscape {prompt} . surreal, ethereal, dreamy, mysterious, fantasy, highly detailed",
"negative_prompt": "realistic, concrete, ordinary, mundane"
},
{
"name": "misc-dystopian",
"prompt": "dystopian style {prompt} . bleak, post-apocalyptic, somber, dramatic, highly detailed",
"negative_prompt": "ugly, deformed, noisy, blurry, low contrast, cheerful, optimistic, vibrant, colorful"
},
{
"name": "misc-fairy tale",
"prompt": "fairy tale {prompt} . magical, fantastical, enchanting, storybook style, highly detailed",
"negative_prompt": "realistic, modern, ordinary, mundane"
},
{
"name": "misc-gothic",
"prompt": "gothic style {prompt} . dark, mysterious, haunting, dramatic, ornate, detailed",
"negative_prompt": "ugly, deformed, noisy, blurry, low contrast, realism, photorealistic, cheerful, optimistic"
},
{
"name": "misc-grunge",
"prompt": "grunge style {prompt} . textured, distressed, vintage, edgy, punk rock vibe, dirty, noisy",
"negative_prompt": "smooth, clean, minimalist, sleek, modern, photorealistic"
},
{
"name": "misc-horror",
"prompt": "horror-themed {prompt} . eerie, unsettling, dark, spooky, suspenseful, grim, highly detailed",
"negative_prompt": "cheerful, bright, vibrant, light-hearted, cute"
},
{
"name": "misc-kawaii",
"prompt": "kawaii style {prompt} . cute, adorable, brightly colored, cheerful, anime influence, highly detailed",
"negative_prompt": "dark, scary, realistic, monochrome, abstract"
},
{
"name": "misc-lovecraftian",
"prompt": "lovecraftian horror {prompt} . eldritch, cosmic horror, unknown, mysterious, surreal, highly detailed",
"negative_prompt": "light-hearted, mundane, familiar, simplistic, realistic"
},
{
"name": "misc-macabre",
"prompt": "macabre style {prompt} . dark, gothic, grim, haunting, highly detailed",
"negative_prompt": "bright, cheerful, light-hearted, cartoonish, cute"
},
{
"name": "misc-manga",
"prompt": "manga style {prompt} . vibrant, high-energy, detailed, iconic, Japanese comic style",
"negative_prompt": "ugly, deformed, noisy, blurry, low contrast, realism, photorealistic, Western comic style"
},
{
"name": "misc-metropolis",
"prompt": "metropolis-themed {prompt} . urban, cityscape, skyscrapers, modern, futuristic, highly detailed",
"negative_prompt": "rural, natural, rustic, historical, simple"
},
{
"name": "misc-minimalist",
"prompt": "minimalist style {prompt} . simple, clean, uncluttered, modern, elegant",
"negative_prompt": "ornate, complicated, highly detailed, cluttered, disordered, messy, noisy"
},
{
"name": "misc-monochrome",
"prompt": "monochrome {prompt} . black and white, contrast, tone, texture, detailed",
"negative_prompt": "colorful, vibrant, noisy, blurry, deformed"
},
{
"name": "misc-nautical",
"prompt": "nautical-themed {prompt} . sea, ocean, ships, maritime, beach, marine life, highly detailed",
"negative_prompt": "landlocked, desert, mountains, urban, rustic"
},
{
"name": "misc-space",
"prompt": "space-themed {prompt} . cosmic, celestial, stars, galaxies, nebulas, planets, science fiction, highly detailed",
"negative_prompt": "earthly, mundane, ground-based, realism"
},
{
"name": "misc-stained glass",
"prompt": "stained glass style {prompt} . vibrant, beautiful, translucent, intricate, detailed",
"negative_prompt": "ugly, deformed, noisy, blurry, low contrast, realism, photorealistic"
},
{
"name": "misc-techwear fashion",
"prompt": "techwear fashion {prompt} . futuristic, cyberpunk, urban, tactical, sleek, dark, highly detailed",
"negative_prompt": "vintage, rural, colorful, low contrast, realism, sketch, watercolor"
},
{
"name": "misc-tribal",
"prompt": "tribal style {prompt} . indigenous, ethnic, traditional patterns, bold, natural colors, highly detailed",
"negative_prompt": "modern, futuristic, minimalist, pastel"
},
{
"name": "misc-zentangle",
"prompt": "zentangle {prompt} . intricate, abstract, monochrome, patterns, meditative, highly detailed",
"negative_prompt": "colorful, representative, simplistic, large fields of color"
},
{
"name": "papercraft-collage",
"prompt": "collage style {prompt} . mixed media, layered, textural, detailed, artistic",
"negative_prompt": "ugly, deformed, noisy, blurry, low contrast, realism, photorealistic"
},
{
"name": "papercraft-flat papercut",
"prompt": "flat papercut style {prompt} . silhouette, clean cuts, paper, sharp edges, minimalist, color block",
"negative_prompt": "3D, high detail, noise, grainy, blurry, painting, drawing, photo, disfigured"
},
{
"name": "papercraft-kirigami",
"prompt": "kirigami representation of {prompt} . 3D, paper folding, paper cutting, Japanese, intricate, symmetrical, precision, clean lines",
"negative_prompt": "painting, drawing, 2D, noisy, blurry, deformed"
},
{
"name": "papercraft-paper mache",
"prompt": "paper mache representation of {prompt} . 3D, sculptural, textured, handmade, vibrant, fun",
"negative_prompt": "2D, flat, photo, sketch, digital art, deformed, noisy, blurry"
},
{
"name": "papercraft-paper quilling",
"prompt": "paper quilling art of {prompt} . intricate, delicate, curling, rolling, shaping, coiling, loops, 3D, dimensional, ornamental",
"negative_prompt": "photo, painting, drawing, 2D, flat, deformed, noisy, blurry"
},
{
"name": "papercraft-papercut collage",
"prompt": "papercut collage of {prompt} . mixed media, textured paper, overlapping, asymmetrical, abstract, vibrant",
"negative_prompt": "photo, 3D, realistic, drawing, painting, high detail, disfigured"
},
{
"name": "papercraft-papercut shadow box",
"prompt": "3D papercut shadow box of {prompt} . layered, dimensional, depth, silhouette, shadow, papercut, handmade, high contrast",
"negative_prompt": "painting, drawing, photo, 2D, flat, high detail, blurry, noisy, disfigured"
},
{
"name": "papercraft-stacked papercut",
"prompt": "stacked papercut art of {prompt} . 3D, layered, dimensional, depth, precision cut, stacked layers, papercut, high contrast",
"negative_prompt": "2D, flat, noisy, blurry, painting, drawing, photo, deformed"
},
{
"name": "papercraft-thick layered papercut",
"prompt": "thick layered papercut art of {prompt} . deep 3D, volumetric, dimensional, depth, thick paper, high stack, heavy texture, tangible layers",
"negative_prompt": "2D, flat, thin paper, low stack, smooth texture, painting, drawing, photo, deformed"
},
{
"name": "photo-alien",
"prompt": "alien-themed {prompt} . extraterrestrial, cosmic, otherworldly, mysterious, sci-fi, highly detailed",
"negative_prompt": "earthly, mundane, common, realistic, simple"
},
{
"name": "photo-film noir",
"prompt": "film noir style {prompt} . monochrome, high contrast, dramatic shadows, 1940s style, mysterious, cinematic",
"negative_prompt": "ugly, deformed, noisy, blurry, low contrast, realism, photorealistic, vibrant, colorful"
},
{
"name": "photo-hdr",
"prompt": "HDR photo of {prompt} . High dynamic range, vivid, rich details, clear shadows and highlights, realistic, intense, enhanced contrast, highly detailed",
"negative_prompt": "flat, low contrast, oversaturated, underexposed, overexposed, blurred, noisy"
},
{
"name": "photo-long exposure",
"prompt": "long exposure photo of {prompt} . Blurred motion, streaks of light, surreal, dreamy, ghosting effect, highly detailed",
"negative_prompt": "static, noisy, deformed, shaky, abrupt, flat, low contrast"
},
{
"name": "photo-neon noir",
"prompt": "neon noir {prompt} . cyberpunk, dark, rainy streets, neon signs, high contrast, low light, vibrant, highly detailed",
"negative_prompt": "bright, sunny, daytime, low contrast, black and white, sketch, watercolor"
},
{
"name": "photo-silhouette",
"prompt": "silhouette style {prompt} . high contrast, minimalistic, black and white, stark, dramatic",
"negative_prompt": "ugly, deformed, noisy, blurry, low contrast, color, realism, photorealistic"
},
{
"name": "photo-tilt-shift",
"prompt": "tilt-shift photo of {prompt} . Selective focus, miniature effect, blurred background, highly detailed, vibrant, perspective control",
"negative_prompt": "blurry, noisy, deformed, flat, low contrast, unrealistic, oversaturated, underexposed"
}
]
+57
View File
@@ -0,0 +1,57 @@
[
{
"name": "none bySubject",
"prompt": "{prompt}",
"negative_prompt": ""
},
{
"name": "Animal",
"prompt": "animal {prompt}",
"negative_prompt": "human"
},
{
"name": "Art",
"prompt": "art {prompt}",
"negative_prompt": "abstract"
},
{
"name": "Building",
"prompt": "building {prompt}",
"negative_prompt": "landscape"
},
{
"name": "Child",
"prompt": "child {prompt}",
"negative_prompt": "adult"
},
{
"name": "Female",
"prompt": "female {prompt}",
"negative_prompt": "male"
},
{
"name": "Food",
"prompt": "food {prompt}",
"negative_prompt": "mould"
},
{
"name": "Male",
"prompt": "male {prompt}",
"negative_prompt": "female"
},
{
"name": "Nature",
"prompt": "nature {prompt}",
"negative_prompt": "urban"
},
{
"name": "Technology",
"prompt": "technology {prompt}",
"negative_prompt": "organic"
},
{
"name": "Vehicle",
"prompt": "vehicle {prompt}",
"negative_prompt": "structure"
}
]
+57
View File
@@ -0,0 +1,57 @@
[
{
"name": "none byThemes",
"prompt": "{prompt}",
"negative_prompt": ""
},
{
"name": "Abstract",
"prompt": "abstract {prompt}",
"negative_prompt": "realistic"
},
{
"name": "Aerial",
"prompt": "aerial {prompt}",
"negative_prompt": "ground"
},
{
"name": "Fashion",
"prompt": "fashion {prompt}",
"negative_prompt": "casual"
},
{
"name": "Landscape",
"prompt": "landscape {prompt}",
"negative_prompt": "portrait"
},
{
"name": "Macro",
"prompt": "macro {prompt}",
"negative_prompt": "micro"
},
{
"name": "Portrait",
"prompt": "portrait {prompt}",
"negative_prompt": "landscape"
},
{
"name": "Sports",
"prompt": "sports {prompt}",
"negative_prompt": "stilllife"
},
{
"name": "Street",
"prompt": "street {prompt}",
"negative_prompt": "studio"
},
{
"name": "Wedding",
"prompt": "wedding {prompt}",
"negative_prompt": "event"
},
{
"name": "Wildlife",
"prompt": "wildlife {prompt}",
"negative_prompt": "urban"
}
]
+57
View File
@@ -0,0 +1,57 @@
[
{
"name": "none byTimeofDay",
"prompt": "{prompt}",
"negative_prompt": ""
},
{
"name": "Afternoon",
"prompt": "afternoon {prompt}",
"negative_prompt": "morning"
},
{
"name": "BlueHour",
"prompt": "bluehour {prompt}",
"negative_prompt": "night"
},
{
"name": "Evening",
"prompt": "evening {prompt}",
"negative_prompt": "morning"
},
{
"name": "GoldenHour",
"prompt": "goldenhour {prompt}",
"negative_prompt": "night"
},
{
"name": "Midday",
"prompt": "midday {prompt}",
"negative_prompt": "morning"
},
{
"name": "Morning",
"prompt": "morning {prompt}",
"negative_prompt": "night"
},
{
"name": "Night",
"prompt": "night {prompt}",
"negative_prompt": "day"
},
{
"name": "Sunrise",
"prompt": "sunrise {prompt}",
"negative_prompt": "sunset"
},
{
"name": "Sunset",
"prompt": "sunset {prompt}",
"negative_prompt": "morning"
},
{
"name": "Twilight",
"prompt": "twilight {prompt}",
"negative_prompt": "day"
}
]