import os import sys import subprocess # Asegurar que Pillow este instalado try: from PIL import Image, ImageDraw, ImageFont except ImportError: print("Pillow no esta instalado. Instalando...") subprocess.check_call([sys.executable, "-m", "pip", "install", "Pillow"]) from PIL import Image, ImageDraw, ImageFont def generate_assets(): wix_dir = os.path.dirname(os.path.abspath(__file__)) agent_dir = os.path.dirname(wix_dir) # Rutas logo_path = os.path.join(agent_dir, "icon_custom.png") if not os.path.exists(logo_path): logo_path = os.path.join(agent_dir, "icon.png") dialog_bmp_path = os.path.join(wix_dir, "dialog.bmp") banner_bmp_path = os.path.join(wix_dir, "banner.bmp") # Paleta de colores OmniOil color_bg = (9, 11, 15) # #090b0f color_primary = (255, 122, 26) # #ff7a1a color_text = (244, 247, 251) # #f4f7fb color_muted = (154, 168, 186) # #9aa8ba # Cargar logo si existe logo = None if os.path.exists(logo_path): try: logo = Image.open(logo_path).convert("RGBA") print(f"Logo cargado desde {logo_path}") except Exception as e: print(f"No se pudo cargar el logo: {e}") # ---------------------------------------------------- # 1. Generar dialog.bmp (493x312) - Bienvenida/Finalizacion # ---------------------------------------------------- # El fondo general es blanco para que el texto de WiX sea legible. # El panel de la izquierda es el panel corporativo oscuro con el logo. img_dialog = Image.new("RGB", (493, 312), (255, 255, 255)) draw_dialog = ImageDraw.Draw(img_dialog) # Dibujar panel lateral oscuro corporativo draw_dialog.rectangle([0, 0, 164, 312], fill=(9, 11, 15)) # Linea naranja divisoria draw_dialog.rectangle([162, 0, 164, 312], fill=color_primary) # Colocar logo en el panel lateral if logo: logo_dialog = logo.resize((120, 120), Image.Resampling.LANCZOS) # Pegar con canal alfa img_dialog.paste(logo_dialog, (22, 96), logo_dialog) # Guardar como BMP de 24 bits img_dialog.save(dialog_bmp_path, "BMP") print(f"dialog.bmp generado exitosamente en {dialog_bmp_path}") # ---------------------------------------------------- # 2. Generar banner.bmp (493x58) - Banner superior interno # ---------------------------------------------------- # Fondo blanco para que los titulos de las paginas internas de WiX sean legibles. img_banner = Image.new("RGB", (493, 58), (255, 255, 255)) draw_banner = ImageDraw.Draw(img_banner) # Linea naranja inferior draw_banner.rectangle([0, 56, 493, 58], fill=color_primary) # Colocar logo pequeno a la derecha if logo: logo_banner = logo.resize((42, 42), Image.Resampling.LANCZOS) img_banner.paste(logo_banner, (435, 8), logo_banner) # Guardar como BMP de 24 bits img_banner.save(banner_bmp_path, "BMP") print(f"banner.bmp generado exitosamente en {banner_bmp_path}") if __name__ == "__main__": generate_assets()