better image save reporting

This commit is contained in:
Vladimir Mandic
2024-05-17 10:10:52 -04:00
parent e194d3e6da
commit 9b08e720a5
5 changed files with 15 additions and 15 deletions
+1 -1
View File
@@ -58,7 +58,7 @@ def save_image(image, fn, ext):
image.save(fn, format=image_format, quality=shared.opts.jpeg_quality, pnginfo=pnginfo_data)
elif image_format == 'JPEG':
if image.mode == 'RGBA':
shared.log.warning('Saving RGBA image as JPEG: Alpha channel will be lost')
shared.log.warning('Save: RGBA image as JPEG - removed alpha channel')
image = image.convert("RGB")
elif image.mode == 'I;16':
image = image.point(lambda p: p * 0.0038910505836576).convert("L")
+1 -1
View File
@@ -70,7 +70,7 @@ def pil_to_temp_file(self, img: Image, dir: str, format="png") -> str: # pylint:
img.save(name, pnginfo=(metadata if use_metadata else None))
img.already_saved_as = name
size = os.path.getsize(name)
shared.log.debug(f'Saving temp: image="{name}" resolution={img.width}x{img.height} size={size}')
shared.log.debug(f'Save temp: image="{name}" resolution={img.width}x{img.height} size={size}')
params = ', '.join([f'{k}: {v}' for k, v in img.info.items()])
params = params[12:] if params.startswith('parameters: ') else params
with open(os.path.join(paths.data_path, "params.txt"), "w", encoding="utf8") as file:
+8 -8
View File
@@ -545,21 +545,19 @@ def atomically_save_image():
try:
image_format = Image.registered_extensions()[extension]
except Exception:
shared.log.warning(f'Saving: unknown image format: {extension}')
shared.log.warning(f'Save: unknown image format: {extension}')
image_format = 'JPEG'
if shared.opts.image_watermark_enabled or (shared.opts.image_watermark_position != 'none' and shared.opts.image_watermark_image != ''):
image = set_watermark(image, shared.opts.image_watermark)
size = os.path.getsize(fn) if os.path.exists(fn) else 0
shared.log.info(f'Saving: image="{fn}" type={image_format} resolution={image.width}x{image.height} size={size}')
exifinfo = (exifinfo or "") if shared.opts.image_metadata else ""
# additional metadata saved in files
if shared.opts.save_txt and len(exifinfo) > 0:
try:
with open(filename_txt, "w", encoding="utf8") as file:
file.write(f"{exifinfo}\n")
shared.log.info(f'Saving: text="{filename_txt}" len={len(exifinfo)}')
shared.log.info(f'Save: text="{filename_txt}" len={len(exifinfo)}')
except Exception as e:
shared.log.warning(f'Saving failed: description={filename_txt} {e}')
shared.log.warning(f'Save failed: description={filename_txt} {e}')
# actual save
if image_format == 'PNG':
pnginfo_data = PngImagePlugin.PngInfo()
@@ -568,7 +566,7 @@ def atomically_save_image():
save_args = { 'compress_level': 6, 'pnginfo': pnginfo_data if shared.opts.image_metadata else None }
elif image_format == 'JPEG':
if image.mode == 'RGBA':
shared.log.warning('Saving: removing alpha channel')
shared.log.warning('Save: removing alpha channel')
image = image.convert("RGB")
elif image.mode == 'I;16':
image = image.point(lambda p: p * 0.0038910505836576).convert("L")
@@ -586,8 +584,10 @@ def atomically_save_image():
try:
image.save(fn, format=image_format, **save_args)
except Exception as e:
shared.log.error(f'Saving failed: file="{fn}" format={image_format} args={save_args} {e}')
shared.log.error(f'Save failed: file="{fn}" format={image_format} args={save_args} {e}')
errors.display(e, 'Image save')
size = os.path.getsize(fn) if os.path.exists(fn) else 0
shared.log.info(f'Save: image="{fn}" type={image_format} resolution={image.width}x{image.height} size={size}')
if shared.opts.save_log_fn != '' and len(exifinfo) > 0:
fn = os.path.join(paths.data_path, shared.opts.save_log_fn)
if not fn.endswith('.json'):
@@ -599,7 +599,7 @@ def atomically_save_image():
entry = { 'id': idx, 'filename': filename, 'time': datetime.datetime.now().isoformat(), 'info': exifinfo }
entries.append(entry)
shared.writefile(entries, fn, mode='w', silent=True)
shared.log.info(f'Saving: json="{fn}" records={len(entries)}')
shared.log.info(f'Save: json="{fn}" records={len(entries)}')
save_queue.task_done()
+4 -4
View File
@@ -141,7 +141,7 @@ def writefile(data, filename, mode='w', silent=False, atomic=False):
locked = False
def default(obj):
log.error(f'Saving: file="{filename}" not a valid object: {obj}')
log.error(f'Save: file="{filename}" not a valid object: {obj}')
return str(obj)
try:
@@ -160,7 +160,7 @@ def writefile(data, filename, mode='w', silent=False, atomic=False):
else:
raise ValueError('not a valid object')
except Exception as e:
log.error(f'Saving failed: file="{filename}" {e}')
log.error(f'Save failed: file="{filename}" {e}')
return
try:
if locking_available:
@@ -186,7 +186,7 @@ def writefile(data, filename, mode='w', silent=False, atomic=False):
if not silent:
log.debug(f'Save: file="{filename}" json={len(data)} bytes={len(output)} time={t1-t0:.3f}')
except Exception as e:
log.error(f'Saving failed: file="{filename}" {e}')
log.error(f'Save failed: file="{filename}" {e}')
try:
if locking_available and lock_file is not None:
lock_file.release_write_lock()
@@ -936,7 +936,7 @@ class Options:
if len(unused_settings) > 0:
log.debug(f"Unused settings: {unused_settings}")
except Exception as e:
log.error(f'Saving settings failed: {filename} {e}')
log.error(f'Save settings failed: {filename} {e}')
def save(self, filename=None, silent=False):
threading.Thread(target=self.save_atomic, args=(filename, silent)).start()
+1 -1
View File
@@ -157,7 +157,7 @@ def save_files(js_data, files, html_info, index):
filename_txt = f"{os.path.splitext(tgt_filename)[0]}.txt"
with open(filename_txt, "w", encoding="utf8") as file:
file.write(f"{info}\n")
shared.log.debug(f'Saving: text="{filename_txt}"')
shared.log.debug(f'Save: text="{filename_txt}"')
except Exception as e:
shared.log.warning(f'Image description save failed: {filename_txt} {e}')
script_callbacks.image_save_btn_callback(tgt_filename)