Runs the image filtering task on the assigned thread
(self)
| 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 |
nothing calls this directly
no test coverage detected