Open sowbug opened 2 years ago
Here's what it might look like. Other advantages:
Here is a Python snippet that works for PNG:
from libxmp import XMPFiles, consts, XMPMeta
import time
xmpfile = XMPFiles(file_path="PNG-metadata-test.png", open_forupdate=True)
xmp = xmpfile.get_xmp()
if xmp is None:
xmp = XMPMeta()
xmp.append_array_item(consts.XMP_NS_DC, 'description', 'the time is %s' % time.asctime(), {'prop_array_is_ordered':True, 'prop_value_is_array':True})
xmpfile.put_xmp(xmp)
xmpfile.close_file()
On my Ubuntu Cinnamon system, this works as expected. Note that I needed to install libxml (pip install python-xmp-toolkit
)
Please take a look at 50d0f0eab52fda64b002092dd7525855c2b59d2d. It mostly does what I had in mind. Outstanding issues are listed in the commit message. Another issue I just thought of is that JSON might be a better format than str(argparse), because it's just as human-readable, but it's more machine-readable.
Anyway, this definitely scratches my own itch for now. If anyone else finds it useful, I'll be happy to turn it into a PR.
Hi, sorry for the late reply, and thanks for adding this amazing feature; I will merge the commits as soon as possible. Thanks again!
Please wait until I submit a PR, as I don't think the current implementation's quality is high enough. The problem is that installation of a certain required library is difficult, and I don't want you to incur a support load for anyone who runs into trouble.
This is good to review. It works for both txt2img and img2txt, and JPEG and PNG file formats. It introduces no platform-specific dependencies. I've manually tested on Debian.
It would be cool to (optionally) embed the information in each file's EXIF metadata needed to reproduce it. Having the seed and the prompt in the filename/folder is nice, but it's not always enough information, and if your
--n_samples
is larger than 1, then the prompt is no longer part of the filename, so individual files have even less metadata.