daveschumaker / artbot-for-stable-diffusion

A front-end GUI for interacting with the AI Horde / Stable Diffusion distributed cluster
https://tinybots.net/artbot
MIT License
172 stars 40 forks source link

Feature/use image metadata editor #202

Closed FredHappyface closed 8 months ago

FredHappyface commented 9 months ago

Add support for XMP and refactor to use image-metadata-editor

image

Working stuff

More effort needed

I plan on looking at these in a future pr as there's pretty significant effort needed. The below comment shows output from exiftool for each type of image and the python pillow lib for png

See the table below

PNG JPG WEBP
Exif
XMP
Parameters
FredHappyface commented 9 months ago

Exiftool


PS C:\Users\Dell\Downloads\exiftool-12.70> & '.\exiftool(-k).exe' '..\purple_wolf(18).png'
ExifTool Version Number         : 12.70
File Name                       : purple_wolf(18).png
Directory                       : ..
File Size                       : 157 kB
Zone Identifier                 : Exists
File Modification Date/Time     : 2023:11:27 18:57:57+00:00
File Access Date/Time           : 2023:11:27 18:57:58+00:00
File Creation Date/Time         : 2023:11:27 18:57:57+00:00
File Permissions                : -rw-rw-rw-
File Type                       : PNG
File Type Extension             : png
MIME Type                       : image/png
Image Width                     : 256
Image Height                    : 256
Bit Depth                       : 8
Color Type                      : RGB with Alpha
Compression                     : Deflate/Inflate
Filter                          : Adaptive
Interlace                       : Noninterlaced
Software                        : ArtBot - Create images with Stable Diffusion, utilizing the AI Horde
Description                     : purple wolf.Steps: 20, Sampler: k_euler, CFG scale: 9, Seed: 3207811052, Size: 256x256, model: stable_diffusion
Comment                         : purple wolf.Steps: 20, Sampler: k_euler, CFG scale: 9, Seed: 3207811052, Size: 256x256, model: stable_diffusion
Title                           : purple wolf.Steps: 20, Sampler: k_euler, CFG scale: 9, Seed: 3207811052, Size: 256x256, model: stable_diffusion
User Comment                    : purple wolf.Steps: 20, Sampler: k_euler, CFG scale: 9, Seed: 3207811052, Size: 256x256, model: stable_diffusion
Warning                         : [minor] Text/EXIF chunk(s) found after PNG IDAT (may be ignored by some readers)
MM                              : *
Image Size                      : 256x256
Megapixels                      : 0.066
-- press ENTER --

PS C:\Users\Dell\Downloads\exiftool-12.70> & '.\exiftool(-k).exe' '..\purple_wolf(3).jpg'
ExifTool Version Number         : 12.70
File Name                       : purple_wolf(3).jpg
Directory                       : ..
File Size                       : 95 kB
Zone Identifier                 : Exists
File Modification Date/Time     : 2023:11:27 18:58:47+00:00
File Access Date/Time           : 2023:11:27 18:58:48+00:00
File Creation Date/Time         : 2023:11:27 18:58:47+00:00
File Permissions                : -rw-rw-rw-
File Type                       : JPEG
File Type Extension             : jpg
MIME Type                       : image/jpeg
Comment                         : purple wolf.Steps: 20, Sampler: k_euler, CFG scale: 9, Seed: 3207811052, Size: 256x256, model: stable_diffusion
Title                           : purple wolf.Steps: 20, Sampler: k_euler, CFG scale: 9, Seed: 3207811052, Size: 256x256, model: stable_diffusion
Exif Byte Order                 : Big-endian (Motorola, MM)
Software                        : ArtBot - Create images with Stable Diffusion, utilizing the AI Horde
User Comment                    : purple wolf.Steps: 20, Sampler: k_euler, CFG scale: 9, Seed: 3207811052, Size: 256x256, model: stable_diffusion
JFIF Version                    : 1.01
Resolution Unit                 : None
X Resolution                    : 1
Y Resolution                    : 1
Image Width                     : 256
Image Height                    : 256
Encoding Process                : Baseline DCT, Huffman coding
Bits Per Sample                 : 8
Color Components                : 3
Y Cb Cr Sub Sampling            : YCbCr4:4:4 (1 1)
Image Size                      : 256x256
Megapixels                      : 0.066
-- press ENTER --

PS C:\Users\Dell\Downloads\exiftool-12.70> & '.\exiftool(-k).exe' '..\purple_wolf-8.webp'
ExifTool Version Number         : 12.70
File Name                       : purple_wolf-8.webp
Directory                       : ..
File Size                       : 81 kB
Zone Identifier                 : Exists
File Modification Date/Time     : 2023:11:27 18:58:59+00:00
File Access Date/Time           : 2023:11:27 18:59:00+00:00
File Creation Date/Time         : 2023:11:27 18:58:59+00:00
File Permissions                : -rw-rw-rw-
File Type                       : Extended WEBP
File Type Extension             : webp
MIME Type                       : image/webp
WebP Flags                      : EXIF
Image Width                     : 256
Image Height                    : 256
Exif Byte Order                 : Big-endian (Motorola, MM)
Software                        : ArtBot - Create images with Stable Diffusion, utilizing the AI Horde
User Comment                    : purple wolf.Steps: 20, Sampler: k_euler, CFG scale: 9, Seed: 3207811052, Size: 256x256, model: stable_diffusion
Image Size                      : 256x256
Megapixels                      : 0.066
-- press ENTER --

Python pillow

py .\getmeta_.py

 == Testing: ./purple_wolf(18).png
{'Comment': 'purple wolf\n'
            'Steps: 20, Sampler: k_euler, CFG scale: 9, Seed: 3207811052, '
            'Size: 256x256, model: stable_diffusion',
 'Description': 'purple wolf\n'
                'Steps: 20, Sampler: k_euler, CFG scale: 9, Seed: 3207811052, '
                'Size: 256x256, model: stable_diffusion',
 'MM': '*\x00\x00\x00\x08\x00\x02\x011\x00\x02\x00\x00\x00E\x00\x00\x00&\x87i\x00\x04\x00\x00\x00\x01\x00\x00\x00k\x00\x00\x00\x00ArtBot '
       '- Create images with Stable Diffusion, utilizing the AI '
       'Horde\x00\x00\x01\x92\x86\x00\x02\x00\x00\x00x\x00\x00\x00yASCII\x00\x00\x00purple '
       'wolf\n'
       'Steps: 20, Sampler: k_euler, CFG scale: 9, Seed: 3207811052, Size: '
       '256x256, model: stable_diffusion\x00',
 'Software': 'ArtBot - Create images with Stable Diffusion, utilizing the AI '
             'Horde',
 'XML:com.adobe.xmp': '<x:xmpmeta xmlns:x="adobe:ns:meta/"><rdf:RDF '
                      'xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"><rdf:Description '
                      'rdf:about="" xmlns:xmp="http://ns.adobe.com/xap/1.0/" '
                      'xmlns:dc="http://purl.org/dc/elements/1.1/" '
                      'xmlns:exif="http://ns.adobe.com/exif/1.0/"><dc:title><rdf:Alt><rdf:li '
                      'xml:lang="x-default">purple wolf\n'
                      'Steps: 20, Sampler: k_euler, CFG scale: 9, Seed: '
                      '3207811052, Size: 256x256, model: '
                      'stable_diffusion</rdf:li></rdf:Alt></dc:title><exif:UserComment><![CDATA[purple '
                      'wolf\n'
                      'Steps: 20, Sampler: k_euler, CFG scale: 9, Seed: '
                      '3207811052, Size: 256x256, model: '
                      'stable_diffusion]]></exif:UserComment></rdf:Description></rdf:RDF></x:xmpmeta>\n'
                      '\t',
 'parameters': 'purple wolf\n'
               'Steps: 20, Sampler: k_euler, CFG scale: 9, Seed: 3207811052, '
               'Size: 256x256, model: stable_diffusion'}

 == Testing: ./purple_wolf(18).png
{'xmpmeta': {'RDF': {'Description': {'UserComment': 'purple wolf\n'
                                                    'Steps: 20, Sampler: '
                                                    'k_euler, CFG scale: 9, '
                                                    'Seed: 3207811052, Size: '
                                                    '256x256, model: '
                                                    'stable_diffusion',
                                     'about': '',
                                     'title': {'Alt': {'li': {'lang': 'x-default',
                                                              'text': 'purple '
                                                                      'wolf\n'
                                                                      'Steps: '
                                                                      '20, '
                                                                      'Sampler: '
                                                                      'k_euler, '
                                                                      'CFG '
                                                                      'scale: '
                                                                      '9, '
                                                                      'Seed: '
                                                                      '3207811052, '
                                                                      'Size: '
                                                                      '256x256, '
                                                                      'model: '
                                                                      'stable_diffusion'}}}}}}}