feat(fallback image): use extracted assets to get image

This commit is contained in:
Haoyu Xu
2021-08-02 17:28:55 -04:00
parent 39e492d1bf
commit 8d9efe8046
4 changed files with 34 additions and 11 deletions

View File

@@ -1,15 +1,7 @@
operators: 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: chen:
common_name: placeholder common_name: placeholder
fallback_name: char_1012_skadi2_2
preview: preview.jpg preview: preview.jpg
project_json: project.json project_json: project.json
release_folder: ./release/{name}/ release_folder: ./release/{name}/
@@ -17,8 +9,19 @@ operators:
target_folder: ./operator/{name}/processed/ target_folder: ./operator/{name}/processed/
title: Ch'en the Holungday title: Ch'en the Holungday
use_skel: true 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: skadi:
common_name: dyn_illust_char_1012_skadi2 common_name: dyn_illust_char_1012_skadi2
fallback_name: char_1012_skadi2_2
preview: preview.jpg preview: preview.jpg
project_json: project.json project_json: project.json
release_folder: ./release/{name}/ release_folder: ./release/{name}/

View File

@@ -22,6 +22,9 @@ class AlphaComposite:
def __open_image(self): def __open_image(self):
self.image = Image.open(self.image_path) self.image = Image.open(self.image_path)
self.mask = Image.open(self.mask_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_image = self.image.load()
self.loaded_mask = self.mask.load() self.loaded_mask = self.mask.load()
@@ -30,3 +33,7 @@ class AlphaComposite:
for x in range(self.mask.size[0]): 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.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)) 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))

View File

@@ -21,12 +21,16 @@ class Builder:
self.__release_file(operator_name) self.__release_file(operator_name)
return return
def stop(self):
return
def build_assets(self, operator_name): def build_assets(self, operator_name):
use_skel = self.config["operators"][operator_name]["use_skel"] use_skel = self.config["operators"][operator_name]["use_skel"]
source_path = self.config["operators"][operator_name]["source_folder"].format(name=operator_name) 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) target_path = self.config["operators"][operator_name]["target_folder"].format(name=operator_name)
common_name = self.config["operators"][operator_name]["common_name"] common_name = self.config["operators"][operator_name]["common_name"]
fallback_name = self.config["operators"][operator_name]["fallback_name"]
file_paths = dict( file_paths = dict(
json=target_path + common_name + ".json", json=target_path + common_name + ".json",
atlas=target_path + common_name + ".atlas", atlas=target_path + common_name + ".atlas",
@@ -62,13 +66,19 @@ class Builder:
), ),
daemon=True, daemon=True,
) )
fallback_thread = threading.Thread(
target=AlphaComposite,
args=(source_path + fallback_name, target_path + "../fallback"),
daemon=True,
)
ar_thread.start() ar_thread.start()
skeleton_binary_thread.start() skeleton_binary_thread.start()
fallback_thread.start()
ar_thread.join() ar_thread.join()
atlas_base64_thread.start() atlas_base64_thread.start()
# alpha composite # alpha composite for live 2d assets
for item in ar.images: for item in ar.images:
alpha_composite_thread = threading.Thread( alpha_composite_thread = threading.Thread(
target=AlphaComposite, target=AlphaComposite,
@@ -121,10 +131,12 @@ class Builder:
json_base64_thread.start() json_base64_thread.start()
json_base64_thread.join() json_base64_thread.join()
# join remaining threads
for thread in png_to_base64_threads: for thread in png_to_base64_threads:
thread.join() thread.join()
atlas_base64_thread.join() atlas_base64_thread.join()
fallback_thread.join()
jsonContent = prefix + str(data) jsonContent = prefix + str(data)
with open(operator_file, "w") as f: with open(operator_file, "w") as f:

View File

@@ -18,6 +18,7 @@ class Config:
source_folder=str, source_folder=str,
target_folder=str, target_folder=str,
common_name=str, common_name=str,
fallback_name=str,
release_folder=str, release_folder=str,
project_json=str, project_json=str,
preview=str, preview=str,