From bf86ede0d2fd2c897fe4df96b5cb8ae75ca4dca0 Mon Sep 17 00:00:00 2001 From: katboi01 Date: Sat, 15 Feb 2025 09:02:20 +0800 Subject: [PATCH] Upload files to "/" --- decode.py | 59 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 decode.py diff --git a/decode.py b/decode.py new file mode 100644 index 0000000..0303bd4 --- /dev/null +++ b/decode.py @@ -0,0 +1,59 @@ +import os +import numpy as np +import UnityPy +from PIL import Image + +#made by Katboi01 +def convert(in_path, out_path): + env = UnityPy.load(in_path) + + for obj in env.objects: + if obj.type.name == "Texture2D": + data = obj.read() + im : Image = data.image + width, height = im.size + + left = int((width - 2) * 0.8) + + im1 = im.crop((0, 0, left, height)) + im1_array = np.asarray(im1, dtype=np.float32) / 255 + + y_channel = im1_array[:, :, 0] + alpha_channel = im1_array[:, :, 2] + + im2 = im.crop((left+2, 0, width, height)).resize((left, height), Image.NEAREST) + im2_array = np.asarray(im2, dtype=np.float32) / 255 + + cr_channel = im2_array[:, :, 0] + cb_channel = im2_array[:, :, 2] + + cr_channel -= 0.5 + cb_channel -= 0.5 + + r_channel = np.clip(y_channel + (1.402 * cr_channel), 0, 1) + g_channel = np.clip(y_channel + (-0.344136 * cb_channel) + (-0.714136 * cr_channel), 0, 1) + b_channel = np.clip(y_channel + (1.772 * cb_channel), 0, 1) + + new_image = np.stack([r_channel, g_channel, b_channel, alpha_channel], axis=-1) + new_image = (new_image * 255).astype(np.uint8) + + result = Image.fromarray(new_image) + + result.save(out_path, format="PNG") + +def main(): + in_path = "decoder_in" + out_path = "decoder_out" + if not os.path.isdir(in_path): + os.makedirs(in_path) + print("Put all files to extract in decoder_in folder") + input("Press Enter/Return to exit") + + os.makedirs(out_path, exist_ok=True) + + for _, _, files in os.walk(in_path): + for name in files: + print(name) + convert(os.path.join(in_path, name), os.path.join(out_path, name)) + +main() \ No newline at end of file