add support for reading saved jpeg comments

This commit is contained in:
AUTOMATIC 2022-09-13 19:23:55 +03:00
parent eeabe62b4d
commit b6b9faa779
2 changed files with 24 additions and 8 deletions

View file

@ -6,6 +6,8 @@ from modules.shared import opts
import modules.gfpgan_model
from modules.ui import plaintext_to_html
import modules.codeformer_model
import piexif
cached_images = {}
@ -73,8 +75,20 @@ def run_extras(image, gfpgan_visibility, codeformer_visibility, codeformer_weigh
def run_pnginfo(image):
items = image.info
if "exif" in image.info:
exif = piexif.load(image.info["exif"])
exif_comment = (exif or {}).get("Exif", {}).get(piexif.ExifIFD.UserComment, b'')
exif_comment = exif_comment.decode("utf8", 'ignore')
items['exif comment'] = exif_comment
for field in ['jfif', 'jfif_version', 'jfif_unit', 'jfif_density', 'dpi', 'exif']:
del items[field]
info = ''
for key, text in image.info.items():
for key, text in items.items():
info += f"""
<div>
<p><b>{plaintext_to_html(str(key))}</b></p>

View file

@ -325,14 +325,16 @@ def save_image(image, path, basename, seed=None, prompt=None, extension='png', i
if not os.path.exists(fullfn):
break
if extension == "png":
image.save(fullfn, quality=opts.jpeg_quality, pnginfo=pnginfo)
if extension.lower() in ("jpg", "jpeg"):
exif_bytes = piexif.dump({
"Exif": {
piexif.ExifIFD.UserComment: info.encode("utf8"),
}
})
else:
exif_dict = { "Exif" : dict() }
exif_dict["Exif"][piexif.ExifIFD.UserComment] = piexif.helper.UserComment.dump(
info, encoding="unicode")
exif_bytes = piexif.dump(exif_dict)
image.save(fullfn, quality=opts.jpeg_quality, exif=exif_bytes)
exif_bytes = None
image.save(fullfn, quality=opts.jpeg_quality, pnginfo=pnginfo, exif=exif_bytes)
target_side_length = 4000
oversize = image.width > target_side_length or image.height > target_side_length