diff --git a/config.yaml b/config.yaml index 3f6f4ab..8e03137 100644 --- a/config.yaml +++ b/config.yaml @@ -1,15 +1,7 @@ operators: - nian: - common_name: placeholder - preview: preview.jpg - project_json: project.json - release_folder: ./release/{name}/ - source_folder: ./operator/{name}/extracted/ - target_folder: ./operator/{name}/processed/ - title: Nian - use_skel: true chen: common_name: placeholder + fallback_name: char_1012_skadi2_2 preview: preview.jpg project_json: project.json release_folder: ./release/{name}/ @@ -17,8 +9,19 @@ operators: target_folder: ./operator/{name}/processed/ title: Ch'en the Holungday use_skel: true + nian: + common_name: placeholder + fallback_name: char_1012_skadi2_2 + preview: preview.jpg + project_json: project.json + release_folder: ./release/{name}/ + source_folder: ./operator/{name}/extracted/ + target_folder: ./operator/{name}/processed/ + title: Nian + use_skel: true skadi: common_name: dyn_illust_char_1012_skadi2 + fallback_name: char_1012_skadi2_2 preview: preview.jpg project_json: project.json release_folder: ./release/{name}/ diff --git a/lib/alpha_composite.py b/lib/alpha_composite.py index 6e2c34a..e9a936b 100644 --- a/lib/alpha_composite.py +++ b/lib/alpha_composite.py @@ -22,6 +22,9 @@ class AlphaComposite: def __open_image(self): self.image = Image.open(self.image_path) self.mask = Image.open(self.mask_path) + if self.image.size != self.mask.size: + # resize mask + self.mask = self.__resize(self.mask, self.image.size[0], self.image.size[1]) self.loaded_image = self.image.load() self.loaded_mask = self.mask.load() @@ -29,4 +32,8 @@ class AlphaComposite: for y in range(self.mask.size[1]): for x in range(self.mask.size[0]): self.loaded_image[x, y] = (self.loaded_image[x, y][0], self.loaded_image[x, y][1], self.loaded_image[x, y][2], self.loaded_mask[x, y][2]) - self.image.save(pathlib.Path.cwd().joinpath(self.save_path)) \ No newline at end of file + self.image.save(pathlib.Path.cwd().joinpath(self.save_path)) + + # resize image + def __resize(self, image, width: int, height: int): + return image.resize((width, height)) diff --git a/lib/builder.py b/lib/builder.py index 27cd23a..6c24f90 100644 --- a/lib/builder.py +++ b/lib/builder.py @@ -21,12 +21,16 @@ class Builder: self.__release_file(operator_name) return + def stop(self): + return + def build_assets(self, operator_name): use_skel = self.config["operators"][operator_name]["use_skel"] source_path = self.config["operators"][operator_name]["source_folder"].format(name=operator_name) target_path = self.config["operators"][operator_name]["target_folder"].format(name=operator_name) common_name = self.config["operators"][operator_name]["common_name"] + fallback_name = self.config["operators"][operator_name]["fallback_name"] file_paths = dict( json=target_path + common_name + ".json", atlas=target_path + common_name + ".atlas", @@ -62,13 +66,19 @@ class Builder: ), daemon=True, ) + fallback_thread = threading.Thread( + target=AlphaComposite, + args=(source_path + fallback_name, target_path + "../fallback"), + daemon=True, + ) ar_thread.start() skeleton_binary_thread.start() + fallback_thread.start() ar_thread.join() atlas_base64_thread.start() - # alpha composite + # alpha composite for live 2d assets for item in ar.images: alpha_composite_thread = threading.Thread( target=AlphaComposite, @@ -121,10 +131,12 @@ class Builder: json_base64_thread.start() json_base64_thread.join() + # join remaining threads for thread in png_to_base64_threads: thread.join() atlas_base64_thread.join() + fallback_thread.join() jsonContent = prefix + str(data) with open(operator_file, "w") as f: diff --git a/lib/config.py b/lib/config.py index be6684f..95aa248 100644 --- a/lib/config.py +++ b/lib/config.py @@ -18,6 +18,7 @@ class Config: source_folder=str, target_folder=str, common_name=str, + fallback_name=str, release_folder=str, project_json=str, preview=str,