156 lines
4.6 KiB
Python
156 lines
4.6 KiB
Python
"""
|
|
Script untuk generate icon dan splash screen
|
|
Sesuai dengan desain loading screen aplikasi Pengering Ikan
|
|
"""
|
|
|
|
from PIL import Image, ImageDraw, ImageFont
|
|
import os
|
|
|
|
# Buat folder assets jika belum ada
|
|
os.makedirs("assets/images", exist_ok=True)
|
|
|
|
# ========================================
|
|
# 1. GENERATE APP ICON (1024x1024)
|
|
# ========================================
|
|
|
|
print("🎨 Generating app icon...")
|
|
|
|
# Buat canvas
|
|
icon_size = 1024
|
|
icon = Image.new('RGB', (icon_size, icon_size), color='white')
|
|
draw = ImageDraw.Draw(icon)
|
|
|
|
# Background gradient biru (simplified - solid blue)
|
|
# Untuk gradient yang lebih bagus, butuh library tambahan
|
|
# Kita pakai solid blue yang matching
|
|
blue_color = (25, 118, 210) # #1976D2
|
|
draw.rectangle([0, 0, icon_size, icon_size], fill=blue_color)
|
|
|
|
# Gambar lingkaran putih di tengah
|
|
circle_radius = 350
|
|
circle_center = (icon_size // 2, icon_size // 2)
|
|
draw.ellipse(
|
|
[
|
|
circle_center[0] - circle_radius,
|
|
circle_center[1] - circle_radius,
|
|
circle_center[0] + circle_radius,
|
|
circle_center[1] + circle_radius
|
|
],
|
|
fill='white'
|
|
)
|
|
|
|
# Gambar icon ikan (simplified - gunakan emoji atau text)
|
|
# Karena kita tidak bisa render Material Icons, kita gunakan emoji ikan
|
|
try:
|
|
# Coba load font yang support emoji
|
|
font_size = 400
|
|
# Windows default font
|
|
font = ImageFont.truetype("seguiemj.ttf", font_size)
|
|
except:
|
|
# Fallback ke default font
|
|
font = ImageFont.load_default()
|
|
|
|
# Gambar emoji ikan di tengah
|
|
fish_emoji = "🐟"
|
|
# Get text bounding box
|
|
bbox = draw.textbbox((0, 0), fish_emoji, font=font)
|
|
text_width = bbox[2] - bbox[0]
|
|
text_height = bbox[3] - bbox[1]
|
|
text_x = (icon_size - text_width) // 2
|
|
text_y = (icon_size - text_height) // 2 - 50
|
|
|
|
draw.text((text_x, text_y), fish_emoji, fill=blue_color, font=font)
|
|
|
|
# Save icon
|
|
icon.save("assets/images/app_icon.png")
|
|
print("✅ App icon saved: assets/images/app_icon.png")
|
|
|
|
# ========================================
|
|
# 2. GENERATE SPLASH SCREEN (1080x1920)
|
|
# ========================================
|
|
|
|
print("🖼️ Generating splash screen...")
|
|
|
|
# Buat canvas
|
|
splash_width = 1080
|
|
splash_height = 1920
|
|
splash = Image.new('RGB', (splash_width, splash_height), color='white')
|
|
draw = ImageDraw.Draw(splash)
|
|
|
|
# Background gradient biru (simplified - solid blue)
|
|
draw.rectangle([0, 0, splash_width, splash_height], fill=blue_color)
|
|
|
|
# Gambar lingkaran putih di tengah (lebih kecil untuk splash)
|
|
circle_radius_splash = 200
|
|
circle_center_splash = (splash_width // 2, splash_height // 2 - 200)
|
|
draw.ellipse(
|
|
[
|
|
circle_center_splash[0] - circle_radius_splash,
|
|
circle_center_splash[1] - circle_radius_splash,
|
|
circle_center_splash[0] + circle_radius_splash,
|
|
circle_center_splash[1] + circle_radius_splash
|
|
],
|
|
fill='white'
|
|
)
|
|
|
|
# Gambar icon ikan
|
|
try:
|
|
font_splash = ImageFont.truetype("seguiemj.ttf", 220)
|
|
except:
|
|
font_splash = ImageFont.load_default()
|
|
|
|
bbox = draw.textbbox((0, 0), fish_emoji, font=font_splash)
|
|
text_width = bbox[2] - bbox[0]
|
|
text_height = bbox[3] - bbox[1]
|
|
text_x = (splash_width - text_width) // 2
|
|
text_y = circle_center_splash[1] - text_height // 2 - 30
|
|
|
|
draw.text((text_x, text_y), fish_emoji, fill=blue_color, font=font_splash)
|
|
|
|
# Tambah text "Pengering Ikan"
|
|
try:
|
|
title_font = ImageFont.truetype("arialbd.ttf", 80)
|
|
except:
|
|
title_font = ImageFont.load_default()
|
|
|
|
title_text = "Pengering Ikan"
|
|
bbox = draw.textbbox((0, 0), title_text, font=title_font)
|
|
title_width = bbox[2] - bbox[0]
|
|
title_x = (splash_width - title_width) // 2
|
|
title_y = circle_center_splash[1] + circle_radius_splash + 100
|
|
|
|
draw.text((title_x, title_y), title_text, fill='white', font=title_font)
|
|
|
|
# Tambah subtitle
|
|
try:
|
|
subtitle_font = ImageFont.truetype("arial.ttf", 40)
|
|
except:
|
|
subtitle_font = ImageFont.load_default()
|
|
|
|
subtitle_text = "Monitoring & Control System"
|
|
bbox = draw.textbbox((0, 0), subtitle_text, font=subtitle_font)
|
|
subtitle_width = bbox[2] - bbox[0]
|
|
subtitle_x = (splash_width - subtitle_width) // 2
|
|
subtitle_y = title_y + 100
|
|
|
|
# Warna putih dengan opacity (simplified - pakai putih biasa)
|
|
draw.text((subtitle_x, subtitle_y), subtitle_text, fill=(255, 255, 255, 180), font=subtitle_font)
|
|
|
|
# Save splash
|
|
splash.save("assets/images/splash.png")
|
|
print("✅ Splash screen saved: assets/images/splash.png")
|
|
|
|
print("")
|
|
print("========================================")
|
|
print("✅ DONE!")
|
|
print("========================================")
|
|
print("")
|
|
print("📊 Generated files:")
|
|
print(" - assets/images/app_icon.png (1024x1024)")
|
|
print(" - assets/images/splash.png (1080x1920)")
|
|
print("")
|
|
print("🚀 Next steps:")
|
|
print(" 1. Run: .\\setup-icon-splash.ps1")
|
|
print(" 2. Run: .\\build-apk.ps1")
|
|
print("")
|