1
0
mirror of https://github.com/Klagarge/PokeHES.git synced 2024-11-23 09:53:28 +00:00
PokeHES/resources/map/texture_splitter.py
2022-06-06 14:10:19 +02:00

51 lines
1.2 KiB
Python

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import os
from PIL import Image
import numpy as np
W, H = 32, 32
def split(path):
if not os.path.exists(path):
print(f"File '{path}' not found")
return
dir_ = os.path.dirname(path)
base = os.path.basename(path)
base, ext = os.path.splitext(base)
try:
img = Image.open(path)
except:
print(f"Could not load '{path}'. Maybe its not an image")
return
a = np.array(img)
w, h = a.shape[1]//W, a.shape[0]//H
n = 0
for y in range(h):
for x in range(w):
try:
i = Image.fromarray(a[y*H:y*H+H, x*W:x*W+W])
i.save(os.path.join(dir_, f"{base}_{x+y*w}{ext}"))
except:
print(f"Could not create texture {x+y*w}")
else:
n += 1
img.close()
print(f"Succesfully created {n} textures")
if a.shape[1] % 32 or a.shape[0] % 32:
print(f"The texture's shape was not a multiple of 32x32 ({a.shape[1]}x{a.shape[0]}). Only fully visible tiles have been extracted.")
if __name__ == "__main__":
path = input("Path to tileset texture: ")
split(path)