| 77 | self._config[key] = value |
| 78 | |
| 79 | def save_buffer(self, processor_name: str, force_save: bool = False): |
| 80 | if not (force_save or self.get("save_buffer", False)): |
| 81 | return self |
| 82 | directory = self.get("output", "./tmp") |
| 83 | if not os.path.isdir(directory): |
| 84 | os.makedirs(directory) |
| 85 | buffer_path = [] |
| 86 | for img in self.get_buffer(): |
| 87 | if img.mode == "RGB": |
| 88 | file_ext = "jpg" |
| 89 | elif img.mode == "RGBA": |
| 90 | file_ext = "png" |
| 91 | else: |
| 92 | raise RuntimeError(f"Unsupported image mode {img.mode}") |
| 93 | |
| 94 | new_filename = f"{processor_name}_{int(time.time())}_{uuid.uuid4().hex}.{file_ext}" |
| 95 | path = os.path.join(directory, new_filename) |
| 96 | img.save(path) |
| 97 | logger.debug(f"Saved image: {path}") |
| 98 | buffer_path.append(path) |
| 99 | self.set("buffer_path", buffer_path) |
| 100 | return self |
| 101 | |
| 102 | def update_buffer(self, buffer: List[Image]): |
| 103 | self.set("buffer", buffer) |