79 lines
2.9 KiB
Python
79 lines
2.9 KiB
Python
import os
|
|
from pathlib import Path
|
|
from PIL import Image
|
|
import json
|
|
|
|
import serverHelper
|
|
# metadata_str = 'cute cat\nSteps: 20, Sampler: Euler a, CFG scale: 7.0, Seed: 2253354038, Size: 512x512, Model hash: 3e16efc8, Seed resize from: -1x-1, Denoising strength: 0, Conditional mask weight: 1.0'
|
|
def convertMetadataToJson(metadata_str):
|
|
print(metadata_str)
|
|
last_new_line_index = metadata_str.rindex('\n')
|
|
prompt = metadata_str[:last_new_line_index]
|
|
other_settings = metadata_str[last_new_line_index+1:]
|
|
|
|
print("prompt:", prompt)
|
|
print("other_settings:", other_settings)
|
|
sub_settings = other_settings.split(",")
|
|
print("sub_settings: ",sub_settings)
|
|
|
|
settings_dict = {}
|
|
settings_dict['prompt'] = prompt
|
|
|
|
for setting in sub_settings:
|
|
[key,value]= setting.split(":")
|
|
key = key.lstrip(' ')
|
|
value = value.lstrip(' ')
|
|
settings_dict[key] = value
|
|
import json
|
|
settings_json = json.dumps(settings_dict)
|
|
print("settings_dict: ",settings_dict)
|
|
print("settings_json ",settings_json)
|
|
return settings_json
|
|
|
|
|
|
|
|
|
|
def getMetadataFromPng(image_path):
|
|
# image_path = "./output/5c42fd2a-6708-45e2-b282-2e9f3894368e/output- 1672476035.4888158.png"
|
|
# image_path = "C:/Users/abdul/Desktop/auto-photoshop/Auto-Photoshop-StableDiffusion-Plugin/server/python_server/output/5c42fd2a-6708-45e2-b282-2e9f3894368e/output- 1672476035.4888158.png"
|
|
im = Image.open(image_path)
|
|
# im.load() # Needed only for .png EXIF data (see citation above)
|
|
# print(im.info['parameters'])
|
|
metadata_string = im.info['parameters']
|
|
metadata_json_string = convertMetadataToJson(metadata_string)
|
|
metadata_dict = json.loads(metadata_json_string)
|
|
print("metadata_dict: ", metadata_dict)
|
|
# print(im.info['meta_to_read'])
|
|
return metadata_dict
|
|
|
|
|
|
def createMetadataJsonFileIfNotExist(image_path):
|
|
|
|
# image_name = os.path.splitext(image_path)
|
|
image_name = Path(image_path).stem
|
|
# parent_dir_path = Path(image_path)
|
|
# parent_dir_path = image_path.split(image_name)[0]
|
|
# os.path.join()
|
|
head = os.path.split(image_path)[0]
|
|
json_file_tail = f'{image_name}.json'
|
|
json_full_path = os.path.join(head,json_file_tail)
|
|
print("image_name: ",image_name)
|
|
print("json_full_path: ",json_full_path)
|
|
isExist = os.path.exists(json_full_path)
|
|
if(isExist):
|
|
#read metadata from json
|
|
metadata_dict = serverHelper.readJson(json_full_path)
|
|
|
|
else:
|
|
#read metadata from image
|
|
#save the metadata to a json file
|
|
metadata_dict = getMetadataFromPng(image_path)
|
|
serverHelper.writeJson(json_full_path,metadata_dict)
|
|
return metadata_dict
|
|
|
|
|
|
if __name__ == "__main__":
|
|
image_path = "C:/Users/abdul/Desktop/auto-photoshop/Auto-Photoshop-StableDiffusion-Plugin/server/python_server/output/5c42fd2a-6708-45e2-b282-2e9f3894368e/output- 1672476035.4888158.png"
|
|
# getMetadataFromPng(image_path)
|
|
createMetadataJsonFileIfNotExist(image_path)
|