| 
									
										
										
										
											2022-09-20 00:13:12 +02:00
										 |  |  | import os | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-09-11 11:31:16 +03:00
										 |  |  | from PIL import Image | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-01-23 09:24:43 +03:00
										 |  |  | from modules import shared, images, devices, scripts, scripts_postprocessing, ui_common, generation_parameters_copypaste | 
					
						
							| 
									
										
										
										
											2022-09-11 11:31:16 +03:00
										 |  |  | from modules.shared import opts | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-10-28 16:36:25 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-01-23 09:24:43 +03:00
										 |  |  | def run_postprocessing(extras_mode, image, image_folder, input_dir, output_dir, show_extras_results, *args, save_output: bool = True): | 
					
						
							| 
									
										
										
										
											2022-09-11 23:24:24 +03:00
										 |  |  |     devices.torch_gc() | 
					
						
							| 
									
										
										
										
											2022-09-11 11:31:16 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-01-03 10:34:51 -05:00
										 |  |  |     shared.state.begin() | 
					
						
							|  |  |  |     shared.state.job = 'extras' | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-01-23 09:24:43 +03:00
										 |  |  |     image_data = [] | 
					
						
							|  |  |  |     image_names = [] | 
					
						
							| 
									
										
										
										
											2022-10-16 13:50:55 +09:00
										 |  |  |     outputs = [] | 
					
						
							| 
									
										
										
										
											2022-12-04 01:13:36 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-09-22 12:11:48 +03:00
										 |  |  |     if extras_mode == 1: | 
					
						
							| 
									
										
										
										
											2022-09-15 22:23:37 -05:00
										 |  |  |         for img in image_folder: | 
					
						
							| 
									
										
										
										
											2023-04-29 09:17:35 +03:00
										 |  |  |             if isinstance(img, Image.Image): | 
					
						
							| 
									
										
										
										
											2023-04-29 09:17:35 +03:00
										 |  |  |                 image = img | 
					
						
							| 
									
										
										
										
											2023-04-29 09:17:35 +03:00
										 |  |  |                 fn = '' | 
					
						
							|  |  |  |             else: | 
					
						
							| 
									
										
										
										
											2023-04-29 09:30:33 +03:00
										 |  |  |                 image = Image.open(os.path.abspath(img.name)) | 
					
						
							| 
									
										
										
										
											2023-04-29 09:17:35 +03:00
										 |  |  |                 fn = os.path.splitext(img.orig_name)[0] | 
					
						
							| 
									
										
										
										
											2023-01-23 09:24:43 +03:00
										 |  |  |             image_data.append(image) | 
					
						
							| 
									
										
										
										
											2023-04-29 09:17:35 +03:00
										 |  |  |             image_names.append(fn) | 
					
						
							| 
									
										
										
										
											2022-10-16 13:50:55 +09:00
										 |  |  |     elif extras_mode == 2: | 
					
						
							| 
									
										
										
										
											2022-10-16 09:51:01 +03:00
										 |  |  |         assert not shared.cmd_opts.hide_ui_dir_config, '--hide-ui-dir-config option must be disabled' | 
					
						
							| 
									
										
										
										
											2023-01-23 09:24:43 +03:00
										 |  |  |         assert input_dir, 'input directory not selected' | 
					
						
							| 
									
										
										
										
											2022-10-16 09:51:01 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-10-29 08:11:03 +03:00
										 |  |  |         image_list = shared.listfiles(input_dir) | 
					
						
							| 
									
										
										
										
											2023-01-23 09:24:43 +03:00
										 |  |  |         for filename in image_list: | 
					
						
							| 
									
										
										
										
											2022-10-20 21:31:29 +09:00
										 |  |  |             try: | 
					
						
							| 
									
										
										
										
											2023-01-23 09:24:43 +03:00
										 |  |  |                 image = Image.open(filename) | 
					
						
							| 
									
										
										
										
											2022-10-20 21:31:29 +09:00
										 |  |  |             except Exception: | 
					
						
							|  |  |  |                 continue | 
					
						
							| 
									
										
										
										
											2023-01-23 09:24:43 +03:00
										 |  |  |             image_data.append(image) | 
					
						
							|  |  |  |             image_names.append(filename) | 
					
						
							| 
									
										
										
										
											2022-09-22 12:11:48 +03:00
										 |  |  |     else: | 
					
						
							| 
									
										
										
										
											2023-01-23 09:24:43 +03:00
										 |  |  |         assert image, 'image not selected' | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         image_data.append(image) | 
					
						
							|  |  |  |         image_names.append(None) | 
					
						
							| 
									
										
										
										
											2022-09-11 11:31:16 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-10-16 13:50:55 +09:00
										 |  |  |     if extras_mode == 2 and output_dir != '': | 
					
						
							|  |  |  |         outpath = output_dir | 
					
						
							|  |  |  |     else: | 
					
						
							|  |  |  |         outpath = opts.outdir_samples or opts.outdir_extras_samples | 
					
						
							| 
									
										
										
										
											2022-09-11 11:31:16 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-01-23 09:24:43 +03:00
										 |  |  |     infotext = '' | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     for image, name in zip(image_data, image_names): | 
					
						
							|  |  |  |         shared.state.textinfo = name | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-10-28 13:24:11 -05:00
										 |  |  |         existing_pnginfo = image.info or {} | 
					
						
							| 
									
										
										
										
											2022-10-09 19:26:52 -06:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-01-23 09:24:43 +03:00
										 |  |  |         pp = scripts_postprocessing.PostprocessedImage(image.convert("RGB")) | 
					
						
							| 
									
										
										
										
											2022-09-11 11:31:16 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-01-23 09:24:43 +03:00
										 |  |  |         scripts.scripts_postproc.run(pp, args) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         if opts.use_original_name_batch and name is not None: | 
					
						
							|  |  |  |             basename = os.path.splitext(os.path.basename(name))[0] | 
					
						
							| 
									
										
										
										
											2022-10-20 19:10:32 +09:00
										 |  |  |         else: | 
					
						
							| 
									
										
										
										
											2022-10-20 21:43:27 +09:00
										 |  |  |             basename = '' | 
					
						
							| 
									
										
										
										
											2022-10-20 19:10:32 +09:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-01-23 09:24:43 +03:00
										 |  |  |         infotext = ", ".join([k if k == v else f'{k}: {generation_parameters_copypaste.quote(v)}' for k, v in pp.info.items() if v is not None]) | 
					
						
							| 
									
										
										
										
											2023-01-03 10:34:51 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-01-23 09:24:43 +03:00
										 |  |  |         if opts.enable_pnginfo: | 
					
						
							|  |  |  |             pp.image.info = existing_pnginfo | 
					
						
							|  |  |  |             pp.image.info["postprocessing"] = infotext | 
					
						
							| 
									
										
										
										
											2022-12-17 04:31:03 -08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-01-23 09:24:43 +03:00
										 |  |  |         if save_output: | 
					
						
							| 
									
										
										
										
											2023-01-23 17:59:58 +03:00
										 |  |  |             images.save_image(pp.image, path=outpath, basename=basename, seed=None, prompt=None, extension=opts.samples_format, info=infotext, short_filename=True, no_prompt=True, grid=False, pnginfo_section_name="extras", existing_info=existing_pnginfo, forced_filename=None) | 
					
						
							| 
									
										
										
										
											2022-09-11 11:31:16 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-01-23 09:24:43 +03:00
										 |  |  |         if extras_mode != 2 or show_extras_results: | 
					
						
							|  |  |  |             outputs.append(pp.image) | 
					
						
							| 
									
										
										
										
											2022-09-16 12:43:24 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-09-28 22:14:13 -03:00
										 |  |  |     devices.torch_gc() | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-01-23 09:24:43 +03:00
										 |  |  |     return outputs, ui_common.plaintext_to_html(infotext), '' | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | def run_extras(extras_mode, resize_mode, image, image_folder, input_dir, output_dir, show_extras_results, gfpgan_visibility, codeformer_visibility, codeformer_weight, upscaling_resize, upscaling_resize_w, upscaling_resize_h, upscaling_crop, extras_upscaler_1, extras_upscaler_2, extras_upscaler_2_visibility, upscale_first: bool, save_output: bool = True): | 
					
						
							|  |  |  |     """old handler for API""" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     args = scripts.scripts_postproc.create_args_for_run({ | 
					
						
							|  |  |  |         "Upscale": { | 
					
						
							|  |  |  |             "upscale_mode": resize_mode, | 
					
						
							|  |  |  |             "upscale_by": upscaling_resize, | 
					
						
							|  |  |  |             "upscale_to_width": upscaling_resize_w, | 
					
						
							|  |  |  |             "upscale_to_height": upscaling_resize_h, | 
					
						
							|  |  |  |             "upscale_crop": upscaling_crop, | 
					
						
							|  |  |  |             "upscaler_1_name": extras_upscaler_1, | 
					
						
							|  |  |  |             "upscaler_2_name": extras_upscaler_2, | 
					
						
							|  |  |  |             "upscaler_2_visibility": extras_upscaler_2_visibility, | 
					
						
							|  |  |  |         }, | 
					
						
							|  |  |  |         "GFPGAN": { | 
					
						
							|  |  |  |             "gfpgan_visibility": gfpgan_visibility, | 
					
						
							|  |  |  |         }, | 
					
						
							|  |  |  |         "CodeFormer": { | 
					
						
							|  |  |  |             "codeformer_visibility": codeformer_visibility, | 
					
						
							|  |  |  |             "codeformer_weight": codeformer_weight, | 
					
						
							|  |  |  |         }, | 
					
						
							|  |  |  |     }) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     return run_postprocessing(extras_mode, image, image_folder, input_dir, output_dir, show_extras_results, *args, save_output=save_output) |