MCPcopy Create free account
hub / github.com/easydiffusion/easydiffusion / run

Method run

ui/easydiffusion/tasks/filter_images.py:57–115  ·  view source on GitHub ↗

Runs the image filtering task on the assigned thread

(self)

Source from the content-addressed store, hash-verified

55 req.image = [req.image]
56
57 def run(self):
58 "Runs the image filtering task on the assigned thread"
59
60 from easydiffusion import app
61 from easydiffusion.backend_manager import backend
62
63 context = runtime.context
64
65 model_manager.resolve_model_paths(self.models_data)
66 model_manager.reload_models_if_necessary(context, self.models_data)
67 model_manager.fail_if_models_did_not_load(context)
68
69 print_task_info(self.request, self.models_data, self.output_format, self.save_data)
70
71 has_nsfw_filter = "nsfw_filter" in self.request.filter
72
73 output_format = self.output_format
74
75 backend.set_options(
76 context,
77 output_format=output_format.output_format,
78 output_quality=output_format.output_quality,
79 output_lossless=output_format.output_lossless,
80 )
81
82 images = backend.filter_images(
83 context, self.request.image, self.request.filter, self.request.filter_params, input_type="base64"
84 )
85
86 if has_nsfw_filter:
87 images = filter_nsfw(images)
88
89 if self.save_data.save_to_disk_path is not None:
90 app_config = app.getConfig()
91 folder_format = app_config.get("folder_format", "$id")
92
93 dummy_req = GenerateImageRequest()
94 img_id = base_repr(int(time.time() * 10000), 36)[-7:] # Base 36 conversion, 0-9, A-Z
95
96 save_dir_path = os.path.join(
97 self.save_data.save_to_disk_path, format_folder_name(folder_format, dummy_req, self.task_data)
98 )
99 images_pil = [base64_str_to_img(img) for img in images]
100 save_images(
101 images_pil,
102 save_dir_path,
103 file_name=img_id,
104 output_format=output_format.output_format,
105 output_quality=output_format.output_quality,
106 output_lossless=output_format.output_lossless,
107 )
108
109 res = FilterImageResponse(self.request, self.models_data, images=images)
110 res = res.json()
111 self.buffer_queue.put(json.dumps(res))
112
113 log.info("Filter task completed")
114

Callers

nothing calls this directly

Calls 8

jsonMethod · 0.95
filter_nsfwFunction · 0.90
format_folder_nameFunction · 0.90
FilterImageResponseClass · 0.90
getMethod · 0.80
print_task_infoFunction · 0.70
putMethod · 0.45

Tested by

no test coverage detected