neues bootlogo
This commit is contained in:
Binary file not shown.
|
Before Width: | Height: | Size: 1.8 MiB After Width: | Height: | Size: 44 KiB |
Executable
+146
@@ -0,0 +1,146 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
BTX-Style Boot Logo Generator
|
||||
Erstellt ein professionelles Boot-Logo im BTX/Bildschirmtext Terminal-Stil
|
||||
"""
|
||||
|
||||
from PIL import Image, ImageDraw, ImageFont
|
||||
import os
|
||||
|
||||
# BTX-typische Farbpalette
|
||||
BTX_BLACK = (0, 0, 0)
|
||||
BTX_CYAN = (0, 255, 255)
|
||||
BTX_MAGENTA = (255, 0, 255)
|
||||
BTX_YELLOW = (255, 255, 0)
|
||||
BTX_WHITE = (255, 255, 255)
|
||||
BTX_GREEN = (0, 255, 0)
|
||||
BTX_BLUE = (0, 100, 200)
|
||||
BTX_DARK_CYAN = (0, 180, 180)
|
||||
|
||||
# Bildgröße
|
||||
WIDTH = 800
|
||||
HEIGHT = 600
|
||||
|
||||
# Erstelle Bild
|
||||
img = Image.new('RGB', (WIDTH, HEIGHT), BTX_BLACK)
|
||||
draw = ImageDraw.Draw(img)
|
||||
|
||||
# Versuche Monospace-Font zu laden (BTX-Style)
|
||||
try:
|
||||
# Verschiedene Monospace-Fonts ausprobieren
|
||||
font_paths = [
|
||||
'/usr/share/fonts/truetype/dejavu/DejaVuSansMono-Bold.ttf',
|
||||
'/usr/share/fonts/truetype/liberation/LiberationMono-Bold.ttf',
|
||||
'/usr/share/fonts/truetype/liberation2/LiberationMono-Bold.ttf',
|
||||
'/System/Library/Fonts/Monaco.ttf',
|
||||
]
|
||||
|
||||
font_large = None
|
||||
font_medium = None
|
||||
font_small = None
|
||||
|
||||
for font_path in font_paths:
|
||||
if os.path.exists(font_path):
|
||||
font_large = ImageFont.truetype(font_path, 72)
|
||||
font_medium = ImageFont.truetype(font_path, 42)
|
||||
font_small = ImageFont.truetype(font_path, 28)
|
||||
break
|
||||
|
||||
if not font_large:
|
||||
raise Exception("No font found")
|
||||
|
||||
except:
|
||||
print("Monospace font nicht gefunden, nutze Default-Font")
|
||||
font_large = ImageFont.load_default()
|
||||
font_medium = ImageFont.load_default()
|
||||
font_small = ImageFont.load_default()
|
||||
|
||||
# BTX-Style Border (charakteristischer Block-Rahmen)
|
||||
border_width = 3
|
||||
for i in range(border_width):
|
||||
draw.rectangle([i, i, WIDTH-1-i, HEIGHT-1-i], outline=BTX_CYAN)
|
||||
|
||||
# Terminal/Computer ASCII-Art Symbol (oben)
|
||||
terminal_y = 80
|
||||
terminal_lines = [
|
||||
"╔════════════════╗",
|
||||
"║ ▓▓▓▓▓▓▓▓▓▓▓▓ ║",
|
||||
"║ ▓░░░░░░░░░░▓ ║",
|
||||
"║ ▓░░░░░░░░░░▓ ║",
|
||||
"║ ▓▓▓▓▓▓▓▓▓▓▓▓ ║",
|
||||
"╚═══════╦╦═══════╝",
|
||||
" ║║ "
|
||||
]
|
||||
|
||||
# Zeichne Terminal-Symbol zentriert
|
||||
for i, line in enumerate(terminal_lines):
|
||||
bbox = draw.textbbox((0, 0), line, font=font_medium)
|
||||
text_width = bbox[2] - bbox[0]
|
||||
x = (WIDTH - text_width) // 2
|
||||
y = terminal_y + (i * 35)
|
||||
# Doppelte Zeichen für BTX-Block-Effekt
|
||||
draw.text((x+2, y+2), line, font=font_medium, fill=BTX_BLUE) # Schatten
|
||||
draw.text((x, y), line, font=font_medium, fill=BTX_CYAN)
|
||||
|
||||
# Haupttext "RDP THIN CLIENT"
|
||||
main_text = "RDP THIN CLIENT"
|
||||
bbox = draw.textbbox((0, 0), main_text, font=font_large)
|
||||
text_width = bbox[2] - bbox[0]
|
||||
text_x = (WIDTH - text_width) // 2
|
||||
text_y = 330
|
||||
|
||||
# BTX-Style Doppel-Rendering für Glow-Effekt
|
||||
draw.text((text_x+3, text_y+3), main_text, font=font_large, fill=BTX_BLUE) # Schatten
|
||||
draw.text((text_x, text_y), main_text, font=font_large, fill=BTX_YELLOW)
|
||||
|
||||
# Scanline-Effekt (BTX/CRT-Monitor-Look)
|
||||
for y in range(0, HEIGHT, 4):
|
||||
draw.line([(border_width+5, y), (WIDTH-border_width-5, y)], fill=(10, 10, 10), width=1)
|
||||
|
||||
# Firmen-Branding unten
|
||||
company_text = "HackerSoft™"
|
||||
bbox = draw.textbbox((0, 0), company_text, font=font_medium)
|
||||
text_width = bbox[2] - bbox[0]
|
||||
company_x = (WIDTH - text_width) // 2
|
||||
company_y = 470
|
||||
|
||||
draw.text((company_x+2, company_y+2), company_text, font=font_medium, fill=BTX_BLUE)
|
||||
draw.text((company_x, company_y), company_text, font=font_medium, fill=BTX_MAGENTA)
|
||||
|
||||
# "Hacker-Net Telekommunikation" Subtext
|
||||
subtext = "Hacker-Net Telekommunikation"
|
||||
bbox = draw.textbbox((0, 0), subtext, font=font_small)
|
||||
text_width = bbox[2] - bbox[0]
|
||||
sub_x = (WIDTH - text_width) // 2
|
||||
sub_y = 520
|
||||
|
||||
draw.text((sub_x+1, sub_y+1), subtext, font=font_small, fill=BTX_BLUE)
|
||||
draw.text((sub_x, sub_y), subtext, font=font_small, fill=BTX_DARK_CYAN)
|
||||
|
||||
# Dekorative Ecken (BTX-Style Blocks)
|
||||
block_size = 20
|
||||
positions = [
|
||||
(border_width+10, border_width+10), # Oben links
|
||||
(WIDTH-border_width-30, border_width+10), # Oben rechts
|
||||
(border_width+10, HEIGHT-border_width-30), # Unten links
|
||||
(WIDTH-border_width-30, HEIGHT-border_width-30) # Unten rechts
|
||||
]
|
||||
|
||||
for x, y in positions:
|
||||
draw.rectangle([x, y, x+block_size, y+block_size], fill=BTX_MAGENTA, outline=BTX_YELLOW, width=2)
|
||||
|
||||
# Status-Indicator (BTX-typisch)
|
||||
status_text = "● SYSTEM READY"
|
||||
bbox = draw.textbbox((0, 0), status_text, font=font_small)
|
||||
text_width = bbox[2] - bbox[0]
|
||||
status_x = (WIDTH - text_width) // 2
|
||||
status_y = HEIGHT - 60
|
||||
|
||||
draw.text((status_x+1, status_y+1), status_text, font=font_small, fill=BTX_BLUE)
|
||||
draw.text((status_x, status_y), status_text, font=font_small, fill=BTX_GREEN)
|
||||
|
||||
# Speichern
|
||||
output_path = os.path.join(os.path.dirname(__file__), 'boot-logo.png')
|
||||
img.save(output_path, 'PNG')
|
||||
print(f"BTX-Style Boot-Logo erstellt: {output_path}")
|
||||
print(f"Größe: {WIDTH}x{HEIGHT}")
|
||||
@@ -0,0 +1,96 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
Minimal Terminal-Style Boot Logo Generator
|
||||
Nur Text, wie in einem echten Terminal
|
||||
"""
|
||||
|
||||
from PIL import Image, ImageDraw, ImageFont
|
||||
import os
|
||||
|
||||
# Terminal-Farbschema
|
||||
BG_BLACK = (12, 12, 15)
|
||||
TEXT_GREEN = (0, 255, 100)
|
||||
TEXT_WHITE = (230, 230, 230)
|
||||
TEXT_GRAY = (120, 120, 120)
|
||||
TEXT_CYAN = (100, 200, 255)
|
||||
|
||||
# Bildgröße
|
||||
WIDTH = 800
|
||||
HEIGHT = 600
|
||||
|
||||
# Erstelle Bild
|
||||
img = Image.new('RGB', (WIDTH, HEIGHT), BG_BLACK)
|
||||
draw = ImageDraw.Draw(img)
|
||||
|
||||
# Versuche Monospace-Font zu laden
|
||||
try:
|
||||
font_paths = [
|
||||
'/usr/share/fonts/truetype/dejavu/DejaVuSansMono.ttf',
|
||||
'/usr/share/fonts/truetype/dejavu/DejaVuSansMono-Bold.ttf',
|
||||
'/usr/share/fonts/truetype/liberation/LiberationMono-Regular.ttf',
|
||||
'/usr/share/fonts/truetype/liberation2/LiberationMono-Regular.ttf',
|
||||
]
|
||||
|
||||
font_large = None
|
||||
font_medium = None
|
||||
font_small = None
|
||||
|
||||
for font_path in font_paths:
|
||||
if os.path.exists(font_path):
|
||||
font_large = ImageFont.truetype(font_path, 56)
|
||||
font_medium = ImageFont.truetype(font_path, 28)
|
||||
font_small = ImageFont.truetype(font_path, 22)
|
||||
break
|
||||
|
||||
if not font_large:
|
||||
raise Exception("No font found")
|
||||
|
||||
except:
|
||||
print("Monospace font nicht gefunden, nutze Default-Font")
|
||||
font_large = ImageFont.load_default()
|
||||
font_medium = ImageFont.load_default()
|
||||
font_small = ImageFont.load_default()
|
||||
|
||||
# Start-Position
|
||||
x_offset = 60
|
||||
y_offset = 120
|
||||
line_height = 40
|
||||
|
||||
# Terminal-Output simulieren
|
||||
lines = [
|
||||
("Booting system...", TEXT_GRAY, font_medium),
|
||||
("", TEXT_GRAY, font_medium),
|
||||
("RDP THIN CLIENT SYSTEM", TEXT_WHITE, font_large),
|
||||
("", TEXT_GRAY, font_medium),
|
||||
("[ OK ] Remote Desktop Protocol initialized", TEXT_GREEN, font_medium),
|
||||
("[ OK ] Graphics subsystem ready", TEXT_GREEN, font_medium),
|
||||
("[ OK ] Audio redirection enabled", TEXT_GREEN, font_medium),
|
||||
("[ OK ] USB device support active", TEXT_GREEN, font_medium),
|
||||
("[ OK ] Network services started", TEXT_GREEN, font_medium),
|
||||
("", TEXT_GRAY, font_medium),
|
||||
]
|
||||
|
||||
current_y = y_offset
|
||||
for line_text, color, font in lines:
|
||||
if line_text: # Leere Zeilen überspringen
|
||||
draw.text((x_offset, current_y), line_text, font=font, fill=color)
|
||||
# Größere Abstände für Title
|
||||
if font == font_large:
|
||||
current_y += 80
|
||||
else:
|
||||
current_y += line_height
|
||||
|
||||
# Cursor am Ende
|
||||
cursor_y = current_y
|
||||
draw.rectangle([x_offset, cursor_y, x_offset + 12, cursor_y + 22], fill=TEXT_GREEN)
|
||||
|
||||
# Footer (rechts neben dem Cursor, zentriert)
|
||||
footer_text = "HackerSoft · Hacker-Net Telekommunikation"
|
||||
footer_x = x_offset + 20 # 20px rechts vom Cursor
|
||||
draw.text((footer_x, cursor_y), footer_text, font=font_small, fill=TEXT_GRAY)
|
||||
|
||||
# Speichern
|
||||
output_path = os.path.join(os.path.dirname(__file__), 'boot-logo.png')
|
||||
img.save(output_path, 'PNG')
|
||||
print(f"Minimal Terminal Boot-Logo erstellt: {output_path}")
|
||||
print(f"Größe: {WIDTH}x{HEIGHT}")
|
||||
Reference in New Issue
Block a user