diff --git a/modules/meta_parser.py b/modules/meta_parser.py index c2f689524..7aeb7e7a5 100644 --- a/modules/meta_parser.py +++ b/modules/meta_parser.py @@ -603,9 +603,8 @@ def get_metadata_parser(metadata_scheme: MetadataScheme) -> MetadataParser: raise NotImplementedError -def read_info_from_image(filepath) -> tuple[str | None, MetadataScheme | None]: - with Image.open(filepath) as image: - items = (image.info or {}).copy() +def read_info_from_image(file) -> tuple[str | None, MetadataScheme | None]: + items = (file.info or {}).copy() parameters = items.pop('parameters', None) metadata_scheme = items.pop('fooocus_scheme', None) @@ -614,7 +613,7 @@ def read_info_from_image(filepath) -> tuple[str | None, MetadataScheme | None]: if parameters is not None and is_json(parameters): parameters = json.loads(parameters) elif exif is not None: - exif = image.getexif() + exif = file.getexif() # 0x9286 = UserComment parameters = exif.get(0x9286, None) # 0x927C = MakerNote diff --git a/webui.py b/webui.py index 2eb0f6097..b041a73ae 100644 --- a/webui.py +++ b/webui.py @@ -339,12 +339,12 @@ def trigger_show_image_properties(image): with gr.TabItem(label='Metadata') as metadata_tab: with gr.Column(): - metadata_input_image = grh.Image(label='For images created by Fooocus', source='upload', type='filepath') + metadata_input_image = grh.Image(label='For images created by Fooocus', source='upload', type='pil') metadata_json = gr.JSON(label='Metadata') metadata_import_button = gr.Button(value='Apply Metadata') - def trigger_metadata_preview(filepath): - parameters, metadata_scheme = modules.meta_parser.read_info_from_image(filepath) + def trigger_metadata_preview(file): + parameters, metadata_scheme = modules.meta_parser.read_info_from_image(file) results = {} if parameters is not None: @@ -1018,8 +1018,8 @@ def parse_meta(raw_prompt_txt, is_generating): load_parameter_button.click(modules.meta_parser.load_parameter_button_click, inputs=[prompt, state_is_generating, inpaint_mode], outputs=load_data_outputs, queue=False, show_progress=False) - def trigger_metadata_import(filepath, state_is_generating): - parameters, metadata_scheme = modules.meta_parser.read_info_from_image(filepath) + def trigger_metadata_import(file, state_is_generating): + parameters, metadata_scheme = modules.meta_parser.read_info_from_image(file) if parameters is None: print('Could not find metadata in the image!') parsed_parameters = {}