aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAUTOMATIC <16777216c@gmail.com>2022-09-13 19:23:55 +0300
committerAUTOMATIC <16777216c@gmail.com>2022-09-13 19:23:55 +0300
commitb6b9faa779ca4239ef3c06abddd92d4520effd0e (patch)
tree1e84adb6c32c60c4321d82a0c80b201caa1f8e34
parenteeabe62b4d6088c9beafa208bfcb831e5e9cbd92 (diff)
add support for reading saved jpeg comments
-rw-r--r--modules/extras.py16
-rw-r--r--modules/images.py16
2 files changed, 24 insertions, 8 deletions
diff --git a/modules/extras.py b/modules/extras.py
index 596cd172..cb083544 100644
--- a/modules/extras.py
+++ b/modules/extras.py
@@ -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>
diff --git a/modules/images.py b/modules/images.py
index 2e8eb335..9d730a93 100644
--- a/modules/images.py
+++ b/modules/images.py
@@ -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