Skip to content

Commit b6e4bb8

Browse files
authored
feat: use jpeg instead of jpg, use enums instead of strings (#2453)
* fix: parse width and height as int when applying metadata (#2452) fixes an issue with A1111 metadata scheme where width and height are strings after splitting resolution * feat: use jpeg instead of jpg, use enums instead of strings
1 parent ee96b85 commit b6e4bb8

File tree

5 files changed

+27
-21
lines changed

5 files changed

+27
-21
lines changed

modules/config.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99
from modules.model_loader import load_file_from_url
1010
from modules.util import get_files_from_folder, makedirs_with_log
11-
from modules.flags import Performance, MetadataScheme
11+
from modules.flags import OutputFormat, Performance, MetadataScheme
1212

1313
def get_config_path(key, default_value):
1414
env = os.getenv(key)
@@ -326,7 +326,7 @@ def get_config_item_or_set_default(key, default_value, validator, disable_empty_
326326
default_output_format = get_config_item_or_set_default(
327327
key='default_output_format',
328328
default_value='png',
329-
validator=lambda x: x in modules.flags.output_formats
329+
validator=lambda x: x in OutputFormat.list()
330330
)
331331
default_image_number = get_config_item_or_set_default(
332332
key='default_image_number',

modules/flags.py

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@
6767
cn_ip: (0.5, 0.6), cn_ip_face: (0.9, 0.75), cn_canny: (0.5, 1.0), cn_cpds: (0.5, 1.0)
6868
} # stop, weight
6969

70-
output_formats = ['png', 'jpg', 'webp']
70+
output_formats = ['png', 'jpeg', 'webp']
7171

7272
inpaint_engine_versions = ['None', 'v1', 'v2.5', 'v2.6']
7373
inpaint_option_default = 'Inpaint or Outpaint (default)'
@@ -89,11 +89,19 @@ class MetadataScheme(Enum):
8989
(f'{MetadataScheme.A1111.value} (plain text)', MetadataScheme.A1111.value),
9090
]
9191

92-
lora_count = 5
93-
9492
controlnet_image_count = 4
9593

9694

95+
class OutputFormat(Enum):
96+
PNG = 'png'
97+
JPEG = 'jpeg'
98+
WEBP = 'webp'
99+
100+
@classmethod
101+
def list(cls) -> list:
102+
return list(map(lambda c: c.value, cls))
103+
104+
97105
class Steps(IntEnum):
98106
QUALITY = 60
99107
SPEED = 30
@@ -120,6 +128,3 @@ def steps(self) -> int | None:
120128

121129
def steps_uov(self) -> int | None:
122130
return StepsUOV[self.name].value if Steps[self.name] else None
123-
124-
125-
performance_selections = Performance.list()

modules/meta_parser.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -117,8 +117,8 @@ def get_resolution(key: str, fallback: str | None, source_dict: dict, results: l
117117
results.append(-1)
118118
else:
119119
results.append(gr.update())
120-
results.append(width)
121-
results.append(height)
120+
results.append(int(width))
121+
results.append(int(height))
122122
except:
123123
results.append(gr.update())
124124
results.append(gr.update())

modules/private_logger.py

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,9 @@
66

77
from PIL import Image
88
from PIL.PngImagePlugin import PngInfo
9-
from modules.util import generate_temp_filename
9+
from modules.flags import OutputFormat
1010
from modules.meta_parser import MetadataParser, get_exif
11+
from modules.util import generate_temp_filename
1112

1213
log_cache = {}
1314

@@ -29,17 +30,17 @@ def log(img, metadata, metadata_parser: MetadataParser | None = None, output_for
2930
parsed_parameters = metadata_parser.parse_string(metadata.copy()) if metadata_parser is not None else ''
3031
image = Image.fromarray(img)
3132

32-
if output_format == 'png':
33+
if output_format == OutputFormat.PNG.value:
3334
if parsed_parameters != '':
3435
pnginfo = PngInfo()
3536
pnginfo.add_text('parameters', parsed_parameters)
3637
pnginfo.add_text('fooocus_scheme', metadata_parser.get_scheme().value)
3738
else:
3839
pnginfo = None
3940
image.save(local_temp_filename, pnginfo=pnginfo)
40-
elif output_format == 'jpg':
41+
elif output_format == OutputFormat.JPEG.value:
4142
image.save(local_temp_filename, quality=95, optimize=True, progressive=True, exif=get_exif(parsed_parameters, metadata_parser.get_scheme().value) if metadata_parser else Image.Exif())
42-
elif output_format == 'webp':
43+
elif output_format == OutputFormat.WEBP.value:
4344
image.save(local_temp_filename, quality=95, lossless=False, exif=get_exif(parsed_parameters, metadata_parser.get_scheme().value) if metadata_parser else Image.Exif())
4445
else:
4546
image.save(local_temp_filename)

webui.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -254,15 +254,15 @@ def trigger_metadata_preview(filepath):
254254
with gr.Column(scale=1, visible=modules.config.default_advanced_checkbox) as advanced_column:
255255
with gr.Tab(label='Setting'):
256256
performance_selection = gr.Radio(label='Performance',
257-
choices=modules.flags.performance_selections,
257+
choices=flags.Performance.list(),
258258
value=modules.config.default_performance)
259259
aspect_ratios_selection = gr.Radio(label='Aspect Ratios', choices=modules.config.available_aspect_ratios,
260260
value=modules.config.default_aspect_ratio, info='width × height',
261261
elem_classes='aspect_ratios')
262262
image_number = gr.Slider(label='Image Number', minimum=1, maximum=modules.config.default_max_image_number, step=1, value=modules.config.default_image_number)
263263

264264
output_format = gr.Radio(label='Output Format',
265-
choices=modules.flags.output_formats,
265+
choices=flags.OutputFormat.list(),
266266
value=modules.config.default_output_format)
267267

268268
negative_prompt = gr.Textbox(label='Negative Prompt', show_label=True, placeholder="Type prompt here.",
@@ -427,8 +427,8 @@ def update_history_link():
427427
disable_preview = gr.Checkbox(label='Disable Preview', value=False,
428428
info='Disable preview during generation.')
429429
disable_intermediate_results = gr.Checkbox(label='Disable Intermediate Results',
430-
value=modules.config.default_performance == 'Extreme Speed',
431-
interactive=modules.config.default_performance != 'Extreme Speed',
430+
value=modules.config.default_performance == flags.Performance.EXTREME_SPEED.value,
431+
interactive=modules.config.default_performance != flags.Performance.EXTREME_SPEED.value,
432432
info='Disable intermediate results during generation, only show final gallery.')
433433
disable_seed_increment = gr.Checkbox(label='Disable seed increment',
434434
info='Disable automatic seed increment when image number is > 1.',
@@ -526,9 +526,9 @@ def model_refresh_clicked():
526526
model_refresh.click(model_refresh_clicked, [], [base_model, refiner_model] + lora_ctrls,
527527
queue=False, show_progress=False)
528528

529-
performance_selection.change(lambda x: [gr.update(interactive=x != 'Extreme Speed')] * 11 +
530-
[gr.update(visible=x != 'Extreme Speed')] * 1 +
531-
[gr.update(interactive=x != 'Extreme Speed', value=x == 'Extreme Speed', )] * 1,
529+
performance_selection.change(lambda x: [gr.update(interactive=x != flags.Performance.EXTREME_SPEED.value)] * 11 +
530+
[gr.update(visible=x != flags.Performance.EXTREME_SPEED.value)] * 1 +
531+
[gr.update(interactive=x != flags.Performance.EXTREME_SPEED.value, value=x == flags.Performance.EXTREME_SPEED.value, )] * 1,
532532
inputs=performance_selection,
533533
outputs=[
534534
guidance_scale, sharpness, adm_scaler_end, adm_scaler_positive,

0 commit comments

Comments
 (0)