SESSION SAVE: Jan 21 UI Fixes & Transparency Restoration. Updated Bible & Diaries.
This commit is contained in:
76
restore_and_fix_final.py
Normal file
76
restore_and_fix_final.py
Normal file
@@ -0,0 +1,76 @@
|
||||
|
||||
import os
|
||||
import numpy as np
|
||||
from PIL import Image
|
||||
|
||||
# MAPPING
|
||||
file_map = {
|
||||
"uploaded_image_0_1768959247545.png": ("gumb_start.png", (300, 100)),
|
||||
"uploaded_image_1_1768959247545.png": ("merilec_zdravja.png", (150, 150)),
|
||||
"uploaded_image_2_1768959247545.png": ("okvir_zarjavel.png", (800, 250)),
|
||||
"uploaded_image_3_1768959247545.jpg": ("amnezija_maska.png", (1920, 1080))
|
||||
}
|
||||
|
||||
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 clean_checkerboard(img):
|
||||
# Ensure RGBA
|
||||
img = img.convert("RGBA")
|
||||
data = np.array(img)
|
||||
|
||||
r, g, b = data[:,:,0], data[:,:,1], data[:,:,2]
|
||||
|
||||
# 1. White Squares (Approx 240-255)
|
||||
mask_white = (r > 220) & (g > 220) & (b > 220)
|
||||
|
||||
# 2. Grey Squares (Approx 190-210 usually)
|
||||
# Be careful not to kill the Rusty Frame's grey metal if it matches exactly.
|
||||
# But usually checkerboard is very neutral grey (R=G=B).
|
||||
# We enforce strict neutrality R=G=B tolerance.
|
||||
|
||||
is_neutral = (np.abs(r.astype(int) - g.astype(int)) < 15) & \
|
||||
(np.abs(r.astype(int) - b.astype(int)) < 15)
|
||||
|
||||
is_grey_range = (r > 150) & (r < 220)
|
||||
|
||||
mask_grey = is_grey_range & is_neutral
|
||||
|
||||
# Combine
|
||||
mask_to_remove = mask_white | mask_grey
|
||||
|
||||
# Apply
|
||||
data[mask_to_remove, 3] = 0
|
||||
|
||||
return Image.fromarray(data)
|
||||
|
||||
def process_single(upload_name, target_name, size):
|
||||
src = os.path.join(upload_dir, upload_name)
|
||||
dst = os.path.join(dest_dir, target_name)
|
||||
|
||||
if not os.path.exists(src):
|
||||
print(f"Skipping missing source: {src}")
|
||||
return
|
||||
|
||||
try:
|
||||
img = Image.open(src)
|
||||
|
||||
# Clean
|
||||
cleaned = clean_checkerboard(img)
|
||||
|
||||
# Resize
|
||||
resized = cleaned.resize(size, Image.Resampling.LANCZOS)
|
||||
|
||||
# Save
|
||||
resized.save(dst)
|
||||
print(f"Fixed & Saved: {dst}")
|
||||
|
||||
except Exception as e:
|
||||
print(f"Error on {target_name}: {e}")
|
||||
|
||||
# Run
|
||||
for u_name, (t_name, size) in file_map.items():
|
||||
process_single(u_name, t_name, size)
|
||||
Reference in New Issue
Block a user