Files
novafarma/scripts/utils/restore_green_bg.py
2026-01-25 12:20:50 +01:00

73 lines
2.2 KiB
Python

import os
import numpy as np
from PIL import Image
# MAPPING
file_map = {
"uploaded_image_0_1768981323417.png": "gumb_start.png",
"uploaded_image_1_1768981323417.png": "merilec_zdravja.png",
"uploaded_image_2_1768981323417.png": "okvir_zarjavel.png",
"uploaded_image_3_1768981323417.jpg": "amnezija_maska.png"
}
upload_dir = "/Users/davidkotnik/.gemini/antigravity/brain/998d0b10-1733-4e5b-85ed-249b986ba9b3"
dest_dir = "/Users/davidkotnik/repos/novafarma/assets/slike/NOVE_SLIKE/UI"
if not os.path.exists(dest_dir):
os.makedirs(dest_dir)
def process_image_green(u_name, t_name):
src = os.path.join(upload_dir, u_name)
dst = os.path.join(dest_dir, t_name)
if not os.path.exists(src):
print(f"MISSING SOURCE: {src}")
return
try:
img = Image.open(src).convert("RGBA")
data = np.array(img)
r, g, b = data[:,:,0], data[:,:,1], data[:,:,2]
# 1. CLEAN CHECKERBOARD
is_neutral = (np.abs(r.astype(int) - g.astype(int)) < 15) & \
(np.abs(r.astype(int) - b.astype(int)) < 15)
is_grey_range = (r > 160) & (r < 225)
# White & Grey & (Green safety)
remove_mask = (r > 230) & (g > 230) & (b > 230) | \
(is_neutral & is_grey_range) | \
(g > 200) & (r < 100) & (b < 100)
data[remove_mask, 3] = 0
cleaned = Image.fromarray(data)
# 2. ADD GREEN BACKGROUND
green_bg = Image.new("RGBA", cleaned.size, (0, 255, 0, 255))
green_bg.alpha_composite(cleaned)
# Save as RGB (No transparency, just Green Key)
final = green_bg.convert("RGB")
final.save(dst)
print(f"CREATED: {dst}")
# Verify
if os.path.exists(dst):
print(f" VERIFIED EXISTS: {os.path.getsize(dst)} bytes")
else:
print(f" ERROR: File not found after save!")
except Exception as e:
print(f"EXCEPTION: {e}")
print("STARTING RESTORE WITH GREEN BG...")
for u, t in file_map.items():
process_image_green(u, t)
print("DIRECTORY LISTING:")
print(os.listdir(dest_dir))