79 lines
2.3 KiB
Python
79 lines
2.3 KiB
Python
from PIL import Image
|
|
import os
|
|
|
|
# Lista slik za procesiranje
|
|
images_to_process = [
|
|
'assets/tree_purple.png',
|
|
'assets/tree_apple.png',
|
|
'assets/tree_pear.png',
|
|
'assets/tree_cherry.png'
|
|
]
|
|
|
|
def remove_background(image_path):
|
|
"""Odstrani ozadje iz slike - naredi transparentno"""
|
|
try:
|
|
# Naloži sliko
|
|
img = Image.open(image_path).convert('RGBA')
|
|
data = img.getdata()
|
|
|
|
new_data = []
|
|
for item in data:
|
|
r, g, b, a = item
|
|
|
|
# Izračunaj brightness in grayscale
|
|
brightness = (r + g + b) / 3
|
|
is_grayscale = abs(r - g) < 20 and abs(g - b) < 20 and abs(r - b) < 20
|
|
|
|
# Odstrani:
|
|
# 1. Vse sive barve (šahovsko ozadje)
|
|
# 2. Vse svetle barve (brightness > 150)
|
|
# 3. Bele barve
|
|
# 4. Pastelne barve (nizka saturacija)
|
|
|
|
should_remove = False
|
|
|
|
# Sive barve
|
|
if is_grayscale and brightness > 80:
|
|
should_remove = True
|
|
|
|
# Svetle barve
|
|
if brightness > 150:
|
|
should_remove = True
|
|
|
|
# Bele
|
|
if r > 240 and g > 240 and b > 240:
|
|
should_remove = True
|
|
|
|
# Pastelne (nizka saturacija)
|
|
max_rgb = max(r, g, b)
|
|
min_rgb = min(r, g, b)
|
|
saturation = 0 if max_rgb == 0 else (max_rgb - min_rgb) / max_rgb
|
|
|
|
if saturation < 0.3 and brightness > 120:
|
|
should_remove = True
|
|
|
|
if should_remove:
|
|
new_data.append((r, g, b, 0)) # Transparentno
|
|
else:
|
|
new_data.append(item) # Ohrani original
|
|
|
|
# Posodobi sliko
|
|
img.putdata(new_data)
|
|
|
|
# Shrani
|
|
img.save(image_path)
|
|
print(f'✅ Processed: {image_path}')
|
|
|
|
except Exception as e:
|
|
print(f'❌ Error processing {image_path}: {e}')
|
|
|
|
# Procesiraj vse slike
|
|
print('🎨 Removing backgrounds from tree sprites...')
|
|
for img_path in images_to_process:
|
|
if os.path.exists(img_path):
|
|
remove_background(img_path)
|
|
else:
|
|
print(f'⚠️ File not found: {img_path}')
|
|
|
|
print('✅ Done! All backgrounds removed.')
|