diff --git a/invokeai/app/services/image_file_storage.py b/invokeai/app/services/image_file_storage.py index 15a6a89d5d..ca2a117bd7 100644 --- a/invokeai/app/services/image_file_storage.py +++ b/invokeai/app/services/image_file_storage.py @@ -119,12 +119,18 @@ class DiskImageFileStorage(ImageFileStorageBase): pnginfo = PngImagePlugin.PngInfo() - if metadata is not None: - pnginfo.add_text("invokeai_metadata", json.dumps(metadata)) - if workflow is not None: - pnginfo.add_text("invokeai_workflow", workflow) + if metadata is not None and workflow is not None: + if metadata is not None: + pnginfo.add_text("invokeai_metadata", json.dumps(metadata)) + if workflow is not None: + pnginfo.add_text("invokeai_workflow", workflow) + else: + # For uploaded images, we want to retain metadata. PIL strips it on save; manually add it back + for item_name, item in image.info.items(): + pnginfo.add_text(item_name, item) image.save(image_path, "PNG", pnginfo=pnginfo) + thumbnail_name = get_thumbnail_name(image_name) thumbnail_path = self.get_path(thumbnail_name, thumbnail=True) thumbnail_image = make_thumbnail(image, thumbnail_size)