Spaces:
Running
on
Zero
Running
on
Zero
Seed and Use main image as image conditioner by default
Browse files
app.py
CHANGED
|
@@ -605,7 +605,7 @@ def generate_ai_image_local (
|
|
| 605 |
return None
|
| 606 |
|
| 607 |
|
| 608 |
-
def generate_input_image_click(map_option, prompt_textbox_value, negative_prompt_textbox_value, model_textbox_value, randomize_seed=True, seed=None, use_conditioned_image=False, strength=0.5, image_format="16:9", scale_factor=(8/3), progress=gr.Progress(track_tqdm=True)):
|
| 609 |
if randomize_seed:
|
| 610 |
seed = random.randint(0, constants.MAX_SEED)
|
| 611 |
|
|
@@ -613,6 +613,7 @@ def generate_input_image_click(map_option, prompt_textbox_value, negative_prompt
|
|
| 613 |
model, lora_weights = get_model_and_lora(model_textbox_value)
|
| 614 |
global current_prerendered_image
|
| 615 |
conditioned_image=None
|
|
|
|
| 616 |
|
| 617 |
if use_conditioned_image:
|
| 618 |
print(f"Conditioned path: {current_prerendered_image.value}.. converting to RGB\n")
|
|
@@ -620,6 +621,11 @@ def generate_input_image_click(map_option, prompt_textbox_value, negative_prompt
|
|
| 620 |
if isinstance(current_prerendered_image.value, str):
|
| 621 |
conditioned_image = open_image(current_prerendered_image.value).convert("RGB")
|
| 622 |
print(f"Conditioned Image: {conditioned_image.size}.. converted to RGB\n")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 623 |
|
| 624 |
# Convert image_format from a string split by ":" into two numbers divided
|
| 625 |
width_ratio, height_ratio = map(int, image_format.split(":"))
|
|
@@ -649,19 +655,19 @@ def generate_input_image_click(map_option, prompt_textbox_value, negative_prompt
|
|
| 649 |
image = Image.open(image_path).convert("RGBA")
|
| 650 |
except Exception as e:
|
| 651 |
print(f"Failed to open generated image: {e}")
|
| 652 |
-
return image_path # Return the original image path if opening fails
|
| 653 |
|
| 654 |
# Upscale the image
|
| 655 |
upscaled_image = upscale_image(image, scale_factor)
|
| 656 |
|
| 657 |
# Save the upscaled image to a temporary file
|
| 658 |
-
with NamedTemporaryFile(delete=False, suffix=".png") as tmp_upscaled:
|
| 659 |
upscaled_image.save(tmp_upscaled.name, format="PNG")
|
| 660 |
constants.temp_files.append(tmp_upscaled.name)
|
| 661 |
print(f"Upscaled image saved to {tmp_upscaled.name}")
|
| 662 |
gc.collect()
|
| 663 |
# Return the path of the upscaled image
|
| 664 |
-
return tmp_upscaled.name
|
| 665 |
|
| 666 |
def update_prompt_visibility(map_option):
|
| 667 |
is_visible = (map_option == "Prompt")
|
|
@@ -879,7 +885,7 @@ examples = [["assets//examples//hex_map_p1.png", 32, 1, 0, 0, 0, 0, 0, "#ede9ac4
|
|
| 879 |
gr.set_static_paths(paths=["images/","images/images","images/prerendered","LUT/","fonts/"])
|
| 880 |
|
| 881 |
# Gradio Blocks Interface
|
| 882 |
-
with gr.Blocks(css_paths="style_20250128.css", title=title, theme='Surn/beeuty') as hexaGrid:
|
| 883 |
with gr.Row():
|
| 884 |
gr.Markdown("""
|
| 885 |
# HexaGrid Creator
|
|
@@ -1082,12 +1088,12 @@ with gr.Blocks(css_paths="style_20250128.css", title=title, theme='Surn/beeuty')
|
|
| 1082 |
)
|
| 1083 |
with gr.Row():
|
| 1084 |
generate_input_image = gr.Button(
|
| 1085 |
-
"Generate
|
| 1086 |
elem_id="generate_input_image",
|
| 1087 |
elem_classes="solid"
|
| 1088 |
)
|
| 1089 |
with gr.Column(scale=2):
|
| 1090 |
-
with gr.Accordion("Template
|
| 1091 |
with gr.Row():
|
| 1092 |
with gr.Column(scale=2):
|
| 1093 |
# Gallery from PRE_RENDERED_IMAGES GOES HERE
|
|
@@ -1100,7 +1106,7 @@ with gr.Blocks(css_paths="style_20250128.css", title=title, theme='Surn/beeuty')
|
|
| 1100 |
elem_classes="solid"
|
| 1101 |
)
|
| 1102 |
generate_input_image_from_gallery = gr.Button(
|
| 1103 |
-
"Generate AI Image from
|
| 1104 |
elem_id="generate_input_image_from_gallery",
|
| 1105 |
elem_classes="solid"
|
| 1106 |
)
|
|
@@ -1223,8 +1229,8 @@ with gr.Blocks(css_paths="style_20250128.css", title=title, theme='Surn/beeuty')
|
|
| 1223 |
)
|
| 1224 |
generate_input_image.click(
|
| 1225 |
fn=generate_input_image_click,
|
| 1226 |
-
inputs=[map_options, prompt_textbox, negative_prompt_textbox, model_textbox, randomize_seed, seed_slider, gr.State(False), gr.State(0.5), image_size_ratio],
|
| 1227 |
-
outputs=[input_image], scroll_to_output=True
|
| 1228 |
)
|
| 1229 |
generate_depth_button.click(
|
| 1230 |
fn=generate_depth_button_click,
|
|
@@ -1255,8 +1261,8 @@ with gr.Blocks(css_paths="style_20250128.css", title=title, theme='Surn/beeuty')
|
|
| 1255 |
#use conditioned_image as the input_image for generate_input_image_click
|
| 1256 |
generate_input_image_from_gallery.click(
|
| 1257 |
fn=generate_input_image_click,
|
| 1258 |
-
inputs=[map_options, prompt_textbox, negative_prompt_textbox, model_textbox,randomize_seed, seed_slider, gr.State(True), image_guidance_stength, image_size_ratio],
|
| 1259 |
-
outputs=[input_image], scroll_to_output=True
|
| 1260 |
)
|
| 1261 |
|
| 1262 |
# Update the state variable with the prerendered image filepath when an image is selected
|
|
|
|
| 605 |
return None
|
| 606 |
|
| 607 |
|
| 608 |
+
def generate_input_image_click(image_input, map_option, prompt_textbox_value, negative_prompt_textbox_value, model_textbox_value, randomize_seed=True, seed=None, use_conditioned_image=False, strength=0.5, image_format="16:9", scale_factor=(8/3), progress=gr.Progress(track_tqdm=True)):
|
| 609 |
if randomize_seed:
|
| 610 |
seed = random.randint(0, constants.MAX_SEED)
|
| 611 |
|
|
|
|
| 613 |
model, lora_weights = get_model_and_lora(model_textbox_value)
|
| 614 |
global current_prerendered_image
|
| 615 |
conditioned_image=None
|
| 616 |
+
formatted_map_option = map_option.lower().replace(' ', '_')
|
| 617 |
|
| 618 |
if use_conditioned_image:
|
| 619 |
print(f"Conditioned path: {current_prerendered_image.value}.. converting to RGB\n")
|
|
|
|
| 621 |
if isinstance(current_prerendered_image.value, str):
|
| 622 |
conditioned_image = open_image(current_prerendered_image.value).convert("RGB")
|
| 623 |
print(f"Conditioned Image: {conditioned_image.size}.. converted to RGB\n")
|
| 624 |
+
# use image_input as the conditioned_image if it is not None
|
| 625 |
+
elif image_input is not None:
|
| 626 |
+
conditioned_image = open_image(image_input).convert("RGB")
|
| 627 |
+
print(f"Conditioned Image set to modify Input Image!\nClear to generate new image.")
|
| 628 |
+
gr.Info("Conditioned Image set to modify Input Image! Clear to generate new image",duration=5)
|
| 629 |
|
| 630 |
# Convert image_format from a string split by ":" into two numbers divided
|
| 631 |
width_ratio, height_ratio = map(int, image_format.split(":"))
|
|
|
|
| 655 |
image = Image.open(image_path).convert("RGBA")
|
| 656 |
except Exception as e:
|
| 657 |
print(f"Failed to open generated image: {e}")
|
| 658 |
+
return image_path, seed # Return the original image path if opening fails
|
| 659 |
|
| 660 |
# Upscale the image
|
| 661 |
upscaled_image = upscale_image(image, scale_factor)
|
| 662 |
|
| 663 |
# Save the upscaled image to a temporary file
|
| 664 |
+
with NamedTemporaryFile(delete=False, suffix=".png", prefix=f"{formatted_map_option}_") as tmp_upscaled:
|
| 665 |
upscaled_image.save(tmp_upscaled.name, format="PNG")
|
| 666 |
constants.temp_files.append(tmp_upscaled.name)
|
| 667 |
print(f"Upscaled image saved to {tmp_upscaled.name}")
|
| 668 |
gc.collect()
|
| 669 |
# Return the path of the upscaled image
|
| 670 |
+
return tmp_upscaled.name, seed
|
| 671 |
|
| 672 |
def update_prompt_visibility(map_option):
|
| 673 |
is_visible = (map_option == "Prompt")
|
|
|
|
| 885 |
gr.set_static_paths(paths=["images/","images/images","images/prerendered","LUT/","fonts/"])
|
| 886 |
|
| 887 |
# Gradio Blocks Interface
|
| 888 |
+
with gr.Blocks(css_paths="style_20250128.css", title=title, theme='Surn/beeuty',delete_cache=(21600,86400)) as hexaGrid:
|
| 889 |
with gr.Row():
|
| 890 |
gr.Markdown("""
|
| 891 |
# HexaGrid Creator
|
|
|
|
| 1088 |
)
|
| 1089 |
with gr.Row():
|
| 1090 |
generate_input_image = gr.Button(
|
| 1091 |
+
"Generate from Input Image & Options ",
|
| 1092 |
elem_id="generate_input_image",
|
| 1093 |
elem_classes="solid"
|
| 1094 |
)
|
| 1095 |
with gr.Column(scale=2):
|
| 1096 |
+
with gr.Accordion("Template Images", open = False):
|
| 1097 |
with gr.Row():
|
| 1098 |
with gr.Column(scale=2):
|
| 1099 |
# Gallery from PRE_RENDERED_IMAGES GOES HERE
|
|
|
|
| 1106 |
elem_classes="solid"
|
| 1107 |
)
|
| 1108 |
generate_input_image_from_gallery = gr.Button(
|
| 1109 |
+
"Generate AI Image from Template Image & Options",
|
| 1110 |
elem_id="generate_input_image_from_gallery",
|
| 1111 |
elem_classes="solid"
|
| 1112 |
)
|
|
|
|
| 1229 |
)
|
| 1230 |
generate_input_image.click(
|
| 1231 |
fn=generate_input_image_click,
|
| 1232 |
+
inputs=[input_image,map_options, prompt_textbox, negative_prompt_textbox, model_textbox, randomize_seed, seed_slider, gr.State(False), gr.State(0.5), image_size_ratio],
|
| 1233 |
+
outputs=[input_image, seed_slider], scroll_to_output=True
|
| 1234 |
)
|
| 1235 |
generate_depth_button.click(
|
| 1236 |
fn=generate_depth_button_click,
|
|
|
|
| 1261 |
#use conditioned_image as the input_image for generate_input_image_click
|
| 1262 |
generate_input_image_from_gallery.click(
|
| 1263 |
fn=generate_input_image_click,
|
| 1264 |
+
inputs=[input_image, map_options, prompt_textbox, negative_prompt_textbox, model_textbox,randomize_seed, seed_slider, gr.State(True), image_guidance_stength, image_size_ratio],
|
| 1265 |
+
outputs=[input_image, seed_slider], scroll_to_output=True
|
| 1266 |
)
|
| 1267 |
|
| 1268 |
# Update the state variable with the prerendered image filepath when an image is selected
|
images/prerendered/th/{Hex_gen_map.PNG → Hex_gen_map.png}
RENAMED
|
File without changes
|
images/prerendered/th/{cute3dkawaii.PNG → cute3dkawaii.png}
RENAMED
|
File without changes
|
utils/constants.py
CHANGED
|
@@ -50,9 +50,9 @@ def load_env_vars(env_path):
|
|
| 50 |
print(f"Warning: .env file not found at {env_path}")
|
| 51 |
|
| 52 |
# Set the temporary folder location
|
| 53 |
-
#os.environ['TEMP'] = r'e:\\TMP'
|
| 54 |
-
#os.environ['TMPDIR'] = r'e:\\TMP'
|
| 55 |
-
#os.environ['XDG_CACHE_HOME'] = r'E:\\cache'
|
| 56 |
|
| 57 |
HF_API_TOKEN = os.getenv("HF_TOKEN")
|
| 58 |
if not HF_API_TOKEN:
|
|
@@ -62,7 +62,7 @@ default_lut_example_img = "./LUT/daisy.jpg"
|
|
| 62 |
MAX_SEED = np.iinfo(np.int32).max
|
| 63 |
TARGET_SIZE = (2688,1536)
|
| 64 |
#TMPDIR = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'tmp')
|
| 65 |
-
#os.makedirs(
|
| 66 |
|
| 67 |
|
| 68 |
PROMPTS = {
|
|
@@ -93,7 +93,7 @@ NEGATIVE_PROMPTS = {
|
|
| 93 |
PRERENDER_DIR = "images/prerendered"
|
| 94 |
|
| 95 |
# # List of pre-rendered hexagon map files
|
| 96 |
-
# PRE_RENDERED_MAPS = ['alien_orb_land_1.png', 'alien_prarie_1.png', 'alien_world_1.png', 'alien_world_2.png', 'alien_world_3.png', 'alien_world_4.png', 'alien_world_5.png', 'BurntCity.png', 'canyon_water_1.png', 'CONQ_Caustic_Valley.png', 'CONQ_Frozen_City.png', 'CONQ_Hellebore_Springs.png', 'CONQ_Terra_Therma.png', 'CONQ_Viridian_Bog.png', 'cute3dkawaii.PNG', 'dark_dirt_elevations_1.png', 'donald_park.png', 'elevated_peninsula_1.png', 'Firefly_alien_canyons_1.png', 'Firefly_alien_canyons_2.png', 'Firefly_alien_dry_canyons_1.png', 'Firefly_alien_dry_canyons_2.png', 'Firefly_alien_map_1.png', 'Firefly_hpg_terrain_1.png', 'Firefly_hpg_terrain_2.png', 'Firefly_river_dry_1.png', 'Firefly_river_running_1.png', 'Firefly_topographical_alien_desert_1.png', 'Firefly_topographical_canyon_1.png', 'Firefly_topographical_height_map_1.png', 'Firefly_topographical_height_map_2.png', 'Firefly_topographical_height_map_3.png', 'Firefly_topographical_height_map_5.png', 'Firefly_topographical_height_map_6.png', 'Firefly_topographical_marble_1.png', 'Firefly_topographical_moon_1.png', 'fractal_islands.png', 'Genison.png', 'green_farming_alien_world_1.png', 'green_farming_alien_world_2.png', 'grey_barren_alien_world_1.png', 'grey_barren_alien_world_2.png', 'grey_barren_alien_world_3.png', 'grey_barren_alien_world_4.png', 'grey_barren_alien_world_5.png', 'grey_barren_alien_world_6.png', 'grey_barren_alien_world_7.png', 'grey_waterless_alien_world_map.png', 'grid_1.png', 'Hex_gen_map.
|
| 97 |
|
| 98 |
# # Create full paths for pre-rendered maps
|
| 99 |
# pre_rendered_maps_paths = [os.path.join(PRERENDER_DIR, map_file).replace("\\", "/") for map_file in PRE_RENDERED_MAPS]
|
|
@@ -105,7 +105,7 @@ PRERENDER_DIR = "images/prerendered"
|
|
| 105 |
# for file in PRE_RENDERED_MAPS
|
| 106 |
#}
|
| 107 |
#PRE_RENDERED_MAPS_JSON
|
| 108 |
-
#{'alien orb land 1': 'images/prerendered/alien_orb_land_1.png', 'alien prarie 1': 'images/prerendered/alien_prarie_1.png', 'alien world 1': 'images/prerendered/alien_world_1.png', 'alien world 2': 'images/prerendered/alien_world_2.png', 'alien world 3': 'images/prerendered/alien_world_3.png', 'alien world 4': 'images/prerendered/alien_world_4.png', 'alien world 5': 'images/prerendered/alien_world_5.png', 'BurntCity': 'images/prerendered/BurntCity.png', 'canyon water 1': 'images/prerendered/canyon_water_1.png', 'CONQ Caustic Valley': 'images/prerendered/CONQ_Caustic_Valley.png', 'CONQ Frozen City': 'images/prerendered/CONQ_Frozen_City.png', 'CONQ Hellebore Springs': 'images/prerendered/CONQ_Hellebore_Springs.png', 'CONQ Terra Therma': 'images/prerendered/CONQ_Terra_Therma.png', 'CONQ Viridian Bog': 'images/prerendered/CONQ_Viridian_Bog.png', 'cute3dkawaii': 'images/prerendered/cute3dkawaii.
|
| 109 |
##PRE_RENDERED_MAPS_JSON = { key: { 'file': value, 'quality': 0 } for key, value in PRE_RENDERED_MAPS_JSON.items()}
|
| 110 |
PRE_RENDERED_MAPS_JSON_LEVELS = {
|
| 111 |
'alien orb land 1': {'file': 'images/prerendered/alien_orb_land_1.png', 'thumbnail': 'images/prerendered/th/alien_orb_land_1.png', 'quality': 0},
|
|
@@ -122,7 +122,7 @@ PRE_RENDERED_MAPS_JSON_LEVELS = {
|
|
| 122 |
'CONQ Hellebore Springs': {'file': 'images/prerendered/CONQ_Hellebore_Springs.png', 'thumbnail': 'images/prerendered/th/CONQ_Hellebore_Springs.png', 'quality': 2},
|
| 123 |
'CONQ Terra Therma': {'file': 'images/prerendered/CONQ_Terra_Therma.png', 'thumbnail': 'images/prerendered/th/CONQ_Terra_Therma.png', 'quality': 1},
|
| 124 |
'CONQ Viridian Bog': {'file': 'images/prerendered/CONQ_Viridian_Bog.png', 'thumbnail': 'images/prerendered/th/CONQ_Viridian_Bog.png', 'quality': 1},
|
| 125 |
-
'cute3dkawaii': {'file': 'images/prerendered/cute3dkawaii.
|
| 126 |
'dark dirt elevations 1': {'file': 'images/prerendered/dark_dirt_elevations_1.png', 'thumbnail': 'images/prerendered/th/dark_dirt_elevations_1.png', 'quality': 0},
|
| 127 |
'donald park': {'file': 'images/prerendered/donald_park.png', 'thumbnail': 'images/prerendered/th/donald_park.png', 'quality': 0},
|
| 128 |
'elevated peninsula 1': {'file': 'images/prerendered/elevated_peninsula_1.png', 'thumbnail': 'images/prerendered/th/elevated_peninsula_1.png', 'quality': 0},
|
|
@@ -157,7 +157,7 @@ PRE_RENDERED_MAPS_JSON_LEVELS = {
|
|
| 157 |
'grey barren alien world 7': {'file': 'images/prerendered/grey_barren_alien_world_7.png', 'thumbnail': 'images/prerendered/th/grey_barren_alien_world_7.png', 'quality': 3},
|
| 158 |
'grey waterless alien world map': {'file': 'images/prerendered/grey_waterless_alien_world_map.png', 'thumbnail': 'images/prerendered/th/grey_waterless_alien_world_map.png', 'quality': 3},
|
| 159 |
'grid 1': {'file': 'images/prerendered/grid_1.png', 'thumbnail': 'images/prerendered/th/grid_1.png', 'quality': 0},
|
| 160 |
-
'Hex gen map': {'file': 'images/prerendered/Hex_gen_map.
|
| 161 |
'hex grass dirty': {'file': 'images/prerendered/hex_grass_dirty.png', 'thumbnail': 'images/prerendered/th/hex_grass_dirty.png', 'quality': 0},
|
| 162 |
'hex military industrial alien world map': {'file': 'images/prerendered/hex_military_industrial_alien_world_map.png', 'thumbnail': 'images/prerendered/th/hex_military_industrial_alien_world_map.png', 'quality': 3},
|
| 163 |
'hex mixed elevations battlefield 1': {'file': 'images/prerendered/hex_mixed_elevations_battlefield_1.png', 'thumbnail': 'images/prerendered/th/hex_mixed_elevations_battlefield_1.png', 'quality': 0},
|
|
@@ -251,7 +251,7 @@ LORA_DETAILS = {
|
|
| 251 |
"trigger_words": "anime,",
|
| 252 |
},
|
| 253 |
{
|
| 254 |
-
"notes": "You should use ',anime' as trigger words at the end.
|
| 255 |
},
|
| 256 |
{
|
| 257 |
"parameters" :{
|
|
@@ -268,7 +268,7 @@ LORA_DETAILS = {
|
|
| 268 |
"trigger_words": "scenery style,",
|
| 269 |
},
|
| 270 |
{
|
| 271 |
-
"notes": "You should use ',scenery style' as trigger words at the end.
|
| 272 |
},
|
| 273 |
{
|
| 274 |
"parameters" :{
|
|
@@ -285,7 +285,7 @@ LORA_DETAILS = {
|
|
| 285 |
"trigger_words": "disney style,",
|
| 286 |
},
|
| 287 |
{
|
| 288 |
-
"notes": "You should use ',disney style' as trigger words at the end.
|
| 289 |
},
|
| 290 |
{
|
| 291 |
"parameters" :{
|
|
@@ -295,7 +295,7 @@ LORA_DETAILS = {
|
|
| 295 |
],
|
| 296 |
"XLabs-AI/flux-RealismLora":[
|
| 297 |
{
|
| 298 |
-
"notes": "No trigger words but 8k, Animatrix illustration style, fantasy style, natural photo cinematic should all work
|
| 299 |
},
|
| 300 |
{
|
| 301 |
"parameters" :{
|
|
@@ -314,7 +314,7 @@ LORA_DETAILS = {
|
|
| 314 |
"trigger_words": "FRM$",
|
| 315 |
},
|
| 316 |
{
|
| 317 |
-
"notes": "
|
| 318 |
},
|
| 319 |
{
|
| 320 |
"parameters" :{
|
|
@@ -343,7 +343,7 @@ LORA_DETAILS = {
|
|
| 343 |
],
|
| 344 |
"Shakker-Labs/FLUX.1-dev-LoRA-Logo-Design": [
|
| 345 |
{
|
| 346 |
-
"notes": "
|
| 347 |
},
|
| 348 |
{
|
| 349 |
"trigger_words": "wablogo, logo, Minimalist ",
|
|
@@ -361,7 +361,7 @@ LORA_DETAILS = {
|
|
| 361 |
],
|
| 362 |
"Borcherding/FLUX.1-dev-LoRA-FractalLand-v0.1": [
|
| 363 |
{
|
| 364 |
-
"notes": "
|
| 365 |
},
|
| 366 |
{
|
| 367 |
"trigger_words": "fractalLand ",
|
|
|
|
| 50 |
print(f"Warning: .env file not found at {env_path}")
|
| 51 |
|
| 52 |
# Set the temporary folder location
|
| 53 |
+
# os.environ['TEMP'] = r'e:\\TMP'
|
| 54 |
+
# os.environ['TMPDIR'] = r'e:\\TMP'
|
| 55 |
+
# os.environ['XDG_CACHE_HOME'] = r'E:\\cache'
|
| 56 |
|
| 57 |
HF_API_TOKEN = os.getenv("HF_TOKEN")
|
| 58 |
if not HF_API_TOKEN:
|
|
|
|
| 62 |
MAX_SEED = np.iinfo(np.int32).max
|
| 63 |
TARGET_SIZE = (2688,1536)
|
| 64 |
#TMPDIR = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'tmp')
|
| 65 |
+
#os.makedirs(TMPDIR, exist_ok=True)
|
| 66 |
|
| 67 |
|
| 68 |
PROMPTS = {
|
|
|
|
| 93 |
PRERENDER_DIR = "images/prerendered"
|
| 94 |
|
| 95 |
# # List of pre-rendered hexagon map files
|
| 96 |
+
# PRE_RENDERED_MAPS = ['alien_orb_land_1.png', 'alien_prarie_1.png', 'alien_world_1.png', 'alien_world_2.png', 'alien_world_3.png', 'alien_world_4.png', 'alien_world_5.png', 'BurntCity.png', 'canyon_water_1.png', 'CONQ_Caustic_Valley.png', 'CONQ_Frozen_City.png', 'CONQ_Hellebore_Springs.png', 'CONQ_Terra_Therma.png', 'CONQ_Viridian_Bog.png', 'cute3dkawaii.PNG', 'dark_dirt_elevations_1.png', 'donald_park.png', 'elevated_peninsula_1.png', 'Firefly_alien_canyons_1.png', 'Firefly_alien_canyons_2.png', 'Firefly_alien_dry_canyons_1.png', 'Firefly_alien_dry_canyons_2.png', 'Firefly_alien_map_1.png', 'Firefly_hpg_terrain_1.png', 'Firefly_hpg_terrain_2.png', 'Firefly_river_dry_1.png', 'Firefly_river_running_1.png', 'Firefly_topographical_alien_desert_1.png', 'Firefly_topographical_canyon_1.png', 'Firefly_topographical_height_map_1.png', 'Firefly_topographical_height_map_2.png', 'Firefly_topographical_height_map_3.png', 'Firefly_topographical_height_map_5.png', 'Firefly_topographical_height_map_6.png', 'Firefly_topographical_marble_1.png', 'Firefly_topographical_moon_1.png', 'fractal_islands.png', 'Genison.png', 'green_farming_alien_world_1.png', 'green_farming_alien_world_2.png', 'grey_barren_alien_world_1.png', 'grey_barren_alien_world_2.png', 'grey_barren_alien_world_3.png', 'grey_barren_alien_world_4.png', 'grey_barren_alien_world_5.png', 'grey_barren_alien_world_6.png', 'grey_barren_alien_world_7.png', 'grey_waterless_alien_world_map.png', 'grid_1.png', 'Hex_gen_map.png', 'hex_grass_dirty.png', 'hex_military_industrial_alien_world_map.png', 'hex_mixed_elevations_battlefield_1.png', 'hex_mixed_elevations_battlefield_2.png', 'hex_tree_territory.png', 'lake_city.png', 'mickey_lagoon.png', 'mixed_elevations_battlefield_3.png', 'n6W9Hc.png', 'oasis_mixed_elevations_1.png', 'pic526383.png', 'pinecone_islands.png', 'purple_pines.png', 'red_volcanic_alien_1.png', 'red_volcanic_alien_2.png', 'red_volcanic_alien_3.png', 'red_volcanic_alien_4.png', 'roadway_1.png', 'snowy_lake.png', 'snowy_rolling_hills_1.png', 'volcanic_alien_world_map.png', 'war_torn_post_apocalyptic_alien_world_map.png']
|
| 97 |
|
| 98 |
# # Create full paths for pre-rendered maps
|
| 99 |
# pre_rendered_maps_paths = [os.path.join(PRERENDER_DIR, map_file).replace("\\", "/") for map_file in PRE_RENDERED_MAPS]
|
|
|
|
| 105 |
# for file in PRE_RENDERED_MAPS
|
| 106 |
#}
|
| 107 |
#PRE_RENDERED_MAPS_JSON
|
| 108 |
+
#{'alien orb land 1': 'images/prerendered/alien_orb_land_1.png', 'alien prarie 1': 'images/prerendered/alien_prarie_1.png', 'alien world 1': 'images/prerendered/alien_world_1.png', 'alien world 2': 'images/prerendered/alien_world_2.png', 'alien world 3': 'images/prerendered/alien_world_3.png', 'alien world 4': 'images/prerendered/alien_world_4.png', 'alien world 5': 'images/prerendered/alien_world_5.png', 'BurntCity': 'images/prerendered/BurntCity.png', 'canyon water 1': 'images/prerendered/canyon_water_1.png', 'CONQ Caustic Valley': 'images/prerendered/CONQ_Caustic_Valley.png', 'CONQ Frozen City': 'images/prerendered/CONQ_Frozen_City.png', 'CONQ Hellebore Springs': 'images/prerendered/CONQ_Hellebore_Springs.png', 'CONQ Terra Therma': 'images/prerendered/CONQ_Terra_Therma.png', 'CONQ Viridian Bog': 'images/prerendered/CONQ_Viridian_Bog.png', 'cute3dkawaii': 'images/prerendered/cute3dkawaii.png', 'dark dirt elevations 1': 'images/prerendered/dark_dirt_elevations_1.png', 'donald park': 'images/prerendered/donald_park.png', 'elevated peninsula 1': 'images/prerendered/elevated_peninsula_1.png', 'Firefly alien canyons 1': 'images/prerendered/Firefly_alien_canyons_1.png', 'Firefly alien canyons 2': 'images/prerendered/Firefly_alien_canyons_2.png', 'Firefly alien dry canyons 1': 'images/prerendered/Firefly_alien_dry_canyons_1.png', 'Firefly alien dry canyons 2': 'images/prerendered/Firefly_alien_dry_canyons_2.png', 'Firefly alien map 1': 'images/prerendered/Firefly_alien_map_1.png', 'Firefly hpg terrain 1': 'images/prerendered/Firefly_hpg_terrain_1.png', 'Firefly hpg terrain 2': 'images/prerendered/Firefly_hpg_terrain_2.png', 'Firefly river dry 1': 'images/prerendered/Firefly_river_dry_1.png', 'Firefly river running 1': 'images/prerendered/Firefly_river_running_1.png', 'Firefly topographical alien desert 1': 'images/prerendered/Firefly_topographical_alien_desert_1.png', 'Firefly topographical canyon 1': 'images/prerendered/Firefly_topographical_canyon_1.png', 'Firefly topographical height map 1': 'images/prerendered/Firefly_topographical_height_map_1.png', 'Firefly topographical height map 2': 'images/prerendered/Firefly_topographical_height_map_2.png', 'Firefly topographical height map 3': 'images/prerendered/Firefly_topographical_height_map_3.png', 'Firefly topographical height map 5': 'images/prerendered/Firefly_topographical_height_map_5.png', 'Firefly topographical height map 6': 'images/prerendered/Firefly_topographical_height_map_6.png', 'Firefly topographical marble 1': 'images/prerendered/Firefly_topographical_marble_1.png', 'Firefly topographical moon 1': 'images/prerendered/Firefly_topographical_moon_1.png', 'fractal islands': 'images/prerendered/fractal_islands.png', 'Genison': 'images/prerendered/Genison.png', 'green farming alien world 1': 'images/prerendered/green_farming_alien_world_1.png', 'green farming alien world 2': 'images/prerendered/green_farming_alien_world_2.png', 'grey barren alien world 1': 'images/prerendered/grey_barren_alien_world_1.png', 'grey barren alien world 2': 'images/prerendered/grey_barren_alien_world_2.png', 'grey barren alien world 3': 'images/prerendered/grey_barren_alien_world_3.png', 'grey barren alien world 4': 'images/prerendered/grey_barren_alien_world_4.png', 'grey barren alien world 5': 'images/prerendered/grey_barren_alien_world_5.png', 'grey barren alien world 6': 'images/prerendered/grey_barren_alien_world_6.png', 'grey barren alien world 7': 'images/prerendered/grey_barren_alien_world_7.png', 'grey waterless alien world map': 'images/prerendered/grey_waterless_alien_world_map.png', 'grid 1': 'images/prerendered/grid_1.png', 'Hex gen map': 'images/prerendered/Hex_gen_map.png', 'hex grass dirty': 'images/prerendered/hex_grass_dirty.png', 'hex military industrial alien world map': 'images/prerendered/hex_military_industrial_alien_world_map.png', 'hex mixed elevations battlefield 1': 'images/prerendered/hex_mixed_elevations_battlefield_1.png', 'hex mixed elevations battlefield 2': 'images/prerendered/hex_mixed_elevations_battlefield_2.png', 'hex tree territory': 'images/prerendered/hex_tree_territory.png', 'lake city': 'images/prerendered/lake_city.png', 'mickey lagoon': 'images/prerendered/mickey_lagoon.png', 'mixed elevations battlefield 3': 'images/prerendered/mixed_elevations_battlefield_3.png', 'n6W9Hc': 'images/prerendered/n6W9Hc.png', 'oasis mixed elevations 1': 'images/prerendered/oasis_mixed_elevations_1.png', 'pic526383': 'images/prerendered/pic526383.png', 'pinecone islands': 'images/prerendered/pinecone_islands.png', 'purple pines': 'images/prerendered/purple_pines.png', 'red volcanic alien 1': 'images/prerendered/red_volcanic_alien_1.png', 'red volcanic alien 2': 'images/prerendered/red_volcanic_alien_2.png', 'red volcanic alien 3': 'images/prerendered/red_volcanic_alien_3.png', 'red volcanic alien 4': 'images/prerendered/red_volcanic_alien_4.png', 'roadway 1': 'images/prerendered/roadway_1.png', 'snowy lake': 'images/prerendered/snowy_lake.png', 'snowy rolling hills 1': 'images/prerendered/snowy_rolling_hills_1.png', 'volcanic alien world map': 'images/prerendered/volcanic_alien_world_map.png', 'war torn post apocalyptic alien world map': 'images/prerendered/war_torn_post_apocalyptic_alien_world_map.png'}
|
| 109 |
##PRE_RENDERED_MAPS_JSON = { key: { 'file': value, 'quality': 0 } for key, value in PRE_RENDERED_MAPS_JSON.items()}
|
| 110 |
PRE_RENDERED_MAPS_JSON_LEVELS = {
|
| 111 |
'alien orb land 1': {'file': 'images/prerendered/alien_orb_land_1.png', 'thumbnail': 'images/prerendered/th/alien_orb_land_1.png', 'quality': 0},
|
|
|
|
| 122 |
'CONQ Hellebore Springs': {'file': 'images/prerendered/CONQ_Hellebore_Springs.png', 'thumbnail': 'images/prerendered/th/CONQ_Hellebore_Springs.png', 'quality': 2},
|
| 123 |
'CONQ Terra Therma': {'file': 'images/prerendered/CONQ_Terra_Therma.png', 'thumbnail': 'images/prerendered/th/CONQ_Terra_Therma.png', 'quality': 1},
|
| 124 |
'CONQ Viridian Bog': {'file': 'images/prerendered/CONQ_Viridian_Bog.png', 'thumbnail': 'images/prerendered/th/CONQ_Viridian_Bog.png', 'quality': 1},
|
| 125 |
+
'cute3dkawaii': {'file': 'images/prerendered/cute3dkawaii.png', 'thumbnail': 'images/prerendered/th/cute3dkawaii.png', 'quality': 0},
|
| 126 |
'dark dirt elevations 1': {'file': 'images/prerendered/dark_dirt_elevations_1.png', 'thumbnail': 'images/prerendered/th/dark_dirt_elevations_1.png', 'quality': 0},
|
| 127 |
'donald park': {'file': 'images/prerendered/donald_park.png', 'thumbnail': 'images/prerendered/th/donald_park.png', 'quality': 0},
|
| 128 |
'elevated peninsula 1': {'file': 'images/prerendered/elevated_peninsula_1.png', 'thumbnail': 'images/prerendered/th/elevated_peninsula_1.png', 'quality': 0},
|
|
|
|
| 157 |
'grey barren alien world 7': {'file': 'images/prerendered/grey_barren_alien_world_7.png', 'thumbnail': 'images/prerendered/th/grey_barren_alien_world_7.png', 'quality': 3},
|
| 158 |
'grey waterless alien world map': {'file': 'images/prerendered/grey_waterless_alien_world_map.png', 'thumbnail': 'images/prerendered/th/grey_waterless_alien_world_map.png', 'quality': 3},
|
| 159 |
'grid 1': {'file': 'images/prerendered/grid_1.png', 'thumbnail': 'images/prerendered/th/grid_1.png', 'quality': 0},
|
| 160 |
+
'Hex gen map': {'file': 'images/prerendered/Hex_gen_map.png', 'thumbnail': 'images/prerendered/th/Hex_gen_map.png', 'quality': 0},
|
| 161 |
'hex grass dirty': {'file': 'images/prerendered/hex_grass_dirty.png', 'thumbnail': 'images/prerendered/th/hex_grass_dirty.png', 'quality': 0},
|
| 162 |
'hex military industrial alien world map': {'file': 'images/prerendered/hex_military_industrial_alien_world_map.png', 'thumbnail': 'images/prerendered/th/hex_military_industrial_alien_world_map.png', 'quality': 3},
|
| 163 |
'hex mixed elevations battlefield 1': {'file': 'images/prerendered/hex_mixed_elevations_battlefield_1.png', 'thumbnail': 'images/prerendered/th/hex_mixed_elevations_battlefield_1.png', 'quality': 0},
|
|
|
|
| 251 |
"trigger_words": "anime,",
|
| 252 |
},
|
| 253 |
{
|
| 254 |
+
"notes": "You should use ',anime' as trigger words at the end. "
|
| 255 |
},
|
| 256 |
{
|
| 257 |
"parameters" :{
|
|
|
|
| 268 |
"trigger_words": "scenery style,",
|
| 269 |
},
|
| 270 |
{
|
| 271 |
+
"notes": "You should use ',scenery style' as trigger words at the end. "
|
| 272 |
},
|
| 273 |
{
|
| 274 |
"parameters" :{
|
|
|
|
| 285 |
"trigger_words": "disney style,",
|
| 286 |
},
|
| 287 |
{
|
| 288 |
+
"notes": "You should use ',disney style' as trigger words at the end. "
|
| 289 |
},
|
| 290 |
{
|
| 291 |
"parameters" :{
|
|
|
|
| 295 |
],
|
| 296 |
"XLabs-AI/flux-RealismLora":[
|
| 297 |
{
|
| 298 |
+
"notes": "No trigger words but 8k, Animatrix illustration style, fantasy style, natural photo cinematic should all work "
|
| 299 |
},
|
| 300 |
{
|
| 301 |
"parameters" :{
|
|
|
|
| 314 |
"trigger_words": "FRM$",
|
| 315 |
},
|
| 316 |
{
|
| 317 |
+
"notes": " FRM$ used as trigger words. "
|
| 318 |
},
|
| 319 |
{
|
| 320 |
"parameters" :{
|
|
|
|
| 343 |
],
|
| 344 |
"Shakker-Labs/FLUX.1-dev-LoRA-Logo-Design": [
|
| 345 |
{
|
| 346 |
+
"notes": "Uses wablogo, logo, Minimalist as trigger words.."
|
| 347 |
},
|
| 348 |
{
|
| 349 |
"trigger_words": "wablogo, logo, Minimalist ",
|
|
|
|
| 361 |
],
|
| 362 |
"Borcherding/FLUX.1-dev-LoRA-FractalLand-v0.1": [
|
| 363 |
{
|
| 364 |
+
"notes": "Uses fractalLand at the start of the prompts to activate the fractal elements. . "
|
| 365 |
},
|
| 366 |
{
|
| 367 |
"trigger_words": "fractalLand ",
|
utils/image_utils.py
CHANGED
|
@@ -44,6 +44,12 @@ def open_image(image_path):
|
|
| 44 |
"""
|
| 45 |
if isinstance(image_path, Image.Image):
|
| 46 |
return image_path
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 47 |
import requests
|
| 48 |
try:
|
| 49 |
image_path, is_dict = get_image_from_dict(image_path)
|
|
@@ -686,7 +692,7 @@ def convert_to_rgba_png(file_path: str) -> tuple[Image, str]:
|
|
| 686 |
img = open_image(file_path)
|
| 687 |
print(f"Opened image: {file_path}\n")
|
| 688 |
# Handle ICO files
|
| 689 |
-
if file_path.lower().endswith('.ico'):
|
| 690 |
rgba_img = img.convert('RGBA')
|
| 691 |
new_file_path = Path(file_path).with_suffix('.png')
|
| 692 |
rgba_img.save(new_file_path, format='PNG')
|
|
|
|
| 44 |
"""
|
| 45 |
if isinstance(image_path, Image.Image):
|
| 46 |
return image_path
|
| 47 |
+
else:
|
| 48 |
+
path = Path(image_path)
|
| 49 |
+
new_suffix = path.suffix.lower()
|
| 50 |
+
new_path = path.with_suffix(new_suffix)
|
| 51 |
+
image_path = str(new_path)
|
| 52 |
+
|
| 53 |
import requests
|
| 54 |
try:
|
| 55 |
image_path, is_dict = get_image_from_dict(image_path)
|
|
|
|
| 692 |
img = open_image(file_path)
|
| 693 |
print(f"Opened image: {file_path}\n")
|
| 694 |
# Handle ICO files
|
| 695 |
+
if file_path.lower().endswith(('.ico','.webp','.gif')):
|
| 696 |
rgba_img = img.convert('RGBA')
|
| 697 |
new_file_path = Path(file_path).with_suffix('.png')
|
| 698 |
rgba_img.save(new_file_path, format='PNG')
|