ok
This commit is contained in:
107
scripts/master_resizer.py
Normal file
107
scripts/master_resizer.py
Normal file
@@ -0,0 +1,107 @@
|
||||
|
||||
import os
|
||||
import shutil
|
||||
from PIL import Image
|
||||
import re
|
||||
|
||||
# MASTER CONFIGURATION
|
||||
CONFIG = {
|
||||
"teren": {
|
||||
"path": "assets/slike/teren",
|
||||
"size": (512, 512),
|
||||
"keywords": [r"grass", r"dirt", r"soil", r"water", r"sand", r"ground", r"terrain", r"tileset", r"tree", r"rock", r"stone", r"ruin", r"house", r"building", r"wall", r"fence", r"prop", r"bush", r"flower"]
|
||||
},
|
||||
"liki": {
|
||||
"path": "assets/slike/liki",
|
||||
"size": (256, 256),
|
||||
"keywords": [r"kai", r"ana", r"gronk", r"player", r"character", r"npc", r"druid", r"witch", r"farmer", r"baker", r"priest", r"guide", r"merchant", r"trader", r"kid", r"man", r"woman", r"girl", r"boy"]
|
||||
},
|
||||
"zombiji": {
|
||||
"path": "assets/slike/animations",
|
||||
"size": (128, 128),
|
||||
"keywords": [r"zombie", r"undead", r"mutant", r"walk", r"run", r"idle", r"attack", r"death", r"hit", r"creature", r"rabbit", r"sheep", r"chicken", r"animal"]
|
||||
},
|
||||
"predmeti": {
|
||||
"path": "assets/slike/predmeti",
|
||||
"size": (64, 64),
|
||||
"keywords": [r"tool", r"weapon", r"axe", r"pickaxe", r"vape", r"item", r"resource", r"gem", r"food", r"seed", r"crop", r"sword", r"bow", r"potion", r"rack", r"shop"]
|
||||
},
|
||||
"refs": {
|
||||
"path": "assets/slike/MASTER_REFS",
|
||||
"size": (512, 512), # NEW! Resize leftovers to 512 as default
|
||||
"keywords": []
|
||||
}
|
||||
}
|
||||
|
||||
def master_process():
|
||||
print("🚦 STARTING ADVANCED MASTER PROCESSOR (CLEANING REFS)...")
|
||||
|
||||
# 1. SCAN MASTER_REFS & DISTRIBUTE
|
||||
refs_path = CONFIG["refs"]["path"]
|
||||
|
||||
if os.path.exists(refs_path):
|
||||
print("🔍 Scanning MASTER_REFS to distribute to proper folders...")
|
||||
moved_count = 0
|
||||
|
||||
for root, dirs, files in os.walk(refs_path):
|
||||
for file in files:
|
||||
if not file.lower().endswith(('.png', '.jpg', '.jpeg')):
|
||||
continue
|
||||
|
||||
src = os.path.join(root, file)
|
||||
fname_lower = file.lower()
|
||||
|
||||
target_cat = None
|
||||
|
||||
# Check all categories
|
||||
for cat, data in CONFIG.items():
|
||||
if cat == "refs": continue
|
||||
|
||||
is_match = any(re.search(p, fname_lower) for p in data["keywords"])
|
||||
if is_match:
|
||||
target_cat = cat
|
||||
break
|
||||
|
||||
if target_cat:
|
||||
dst_folder = CONFIG[target_cat]["path"]
|
||||
dst = os.path.join(dst_folder, file)
|
||||
try:
|
||||
shutil.move(src, dst)
|
||||
moved_count += 1
|
||||
except Exception as e:
|
||||
print(f"Error moving {file}: {e}")
|
||||
|
||||
print(f"📦 Distributed {moved_count} images from REFS to categories.")
|
||||
|
||||
# 2. APPLY RESIZE LOGIC (NOW INCLUDING REFS)
|
||||
print("📏 Applying MASTER SIZE RULES to ALL folders...")
|
||||
|
||||
for category, data in CONFIG.items():
|
||||
folder = data["path"]
|
||||
target_size = data["size"]
|
||||
|
||||
if not os.path.exists(folder):
|
||||
continue
|
||||
|
||||
print(f"🔧 Processing {category} -> {target_size}...")
|
||||
count = 0
|
||||
|
||||
for root, dirs, files in os.walk(folder):
|
||||
for file in files:
|
||||
if file.lower().endswith(('.png', '.jpg', '.jpeg')):
|
||||
filepath = os.path.join(root, file)
|
||||
try:
|
||||
with Image.open(filepath) as img:
|
||||
if img.size != target_size:
|
||||
img_resized = img.resize(target_size, Image.Resampling.LANCZOS)
|
||||
img_resized.save(filepath)
|
||||
count += 1
|
||||
except Exception as e:
|
||||
print(f"Error {file}: {e}")
|
||||
|
||||
print(f"✅ Resized {count} images in {folder}")
|
||||
|
||||
print("🏁 MASTER PROCESS COMPLETE.")
|
||||
|
||||
if __name__ == "__main__":
|
||||
master_process()
|
||||
Reference in New Issue
Block a user