Implemented All 18 Biomes + Complete Documentation - Dec 25 2025
This commit is contained in:
80
tools/harvest_and_resize_assets.py
Normal file
80
tools/harvest_and_resize_assets.py
Normal file
@@ -0,0 +1,80 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
Harvest and resize all PNG assets from mrtva_dolina collection
|
||||
Resizes to 40% and saves to ZETEV_ASSETS_CLEAN on Desktop
|
||||
"""
|
||||
|
||||
from pathlib import Path
|
||||
from PIL import Image
|
||||
from collections import defaultdict
|
||||
import shutil
|
||||
|
||||
# Paths
|
||||
SOURCE_DIR = Path("/Users/davidkotnik/Desktop/novafarma/mrtva_dolina")
|
||||
OUTPUT_DIR = Path("/Users/davidkotnik/Desktop/ZETEV_ASSETS_CLEAN")
|
||||
|
||||
# Create output directory
|
||||
OUTPUT_DIR.mkdir(exist_ok=True)
|
||||
|
||||
# Track duplicate names
|
||||
name_counter = defaultdict(int)
|
||||
|
||||
def resize_image(input_path, output_path, scale=0.4):
|
||||
"""Resize image to scale (default 40%)"""
|
||||
try:
|
||||
img = Image.open(input_path)
|
||||
new_width = int(img.width * scale)
|
||||
new_height = int(img.height * scale)
|
||||
resized = img.resize((new_width, new_height), Image.LANCZOS)
|
||||
resized.save(output_path)
|
||||
return True
|
||||
except Exception as e:
|
||||
print(f"❌ Error processing {input_path.name}: {e}")
|
||||
return False
|
||||
|
||||
def get_unique_filename(base_name):
|
||||
"""Generate unique filename if duplicates exist"""
|
||||
name_counter[base_name] += 1
|
||||
|
||||
if name_counter[base_name] == 1:
|
||||
return base_name
|
||||
else:
|
||||
# Add number before extension: tree.png -> tree_2.png
|
||||
stem = Path(base_name).stem
|
||||
suffix = Path(base_name).suffix
|
||||
return f"{stem}_{name_counter[base_name]}{suffix}"
|
||||
|
||||
print("🎨 HARVESTING AND RESIZING ASSETS...\n")
|
||||
print(f"Source: {SOURCE_DIR}")
|
||||
print(f"Output: {OUTPUT_DIR}")
|
||||
print(f"Scale: 40%\n")
|
||||
|
||||
# Find all PNG files
|
||||
png_files = list(SOURCE_DIR.rglob("*.png"))
|
||||
total = len(png_files)
|
||||
|
||||
print(f"Found {total} PNG files\n")
|
||||
|
||||
processed = 0
|
||||
skipped = 0
|
||||
|
||||
for png_file in png_files:
|
||||
# Get unique filename
|
||||
unique_name = get_unique_filename(png_file.name)
|
||||
output_path = OUTPUT_DIR / unique_name
|
||||
|
||||
# Resize and save
|
||||
if resize_image(png_file, output_path):
|
||||
processed += 1
|
||||
if processed % 100 == 0:
|
||||
print(f"✓ Processed {processed}/{total}...")
|
||||
else:
|
||||
skipped += 1
|
||||
|
||||
print(f"\n{'='*50}")
|
||||
print(f"✅ DONE!")
|
||||
print(f"{'='*50}")
|
||||
print(f"✓ Processed: {processed}")
|
||||
print(f"⚠ Skipped: {skipped}")
|
||||
print(f"📂 Output: {OUTPUT_DIR}")
|
||||
print(f"\nAll resized assets are in ZETEV_ASSETS_CLEAN folder on Desktop!")
|
||||
Reference in New Issue
Block a user