Files
Traffic-Intersection-Monito…/qt_app_pyside1/resources/generate_resources.py

114 lines
3.5 KiB
Python

from PySide6.QtGui import QIcon, QPixmap, QPainter, QColor, QFont, QBrush, QPen
from PySide6.QtCore import Qt, QSize, QRect
import os
def generate_app_icon(size=512):
"""Generate a simple app icon if none is available"""
pixmap = QPixmap(size, size)
pixmap.fill(Qt.transparent)
painter = QPainter(pixmap)
painter.setRenderHint(QPainter.Antialiasing, True)
# Background
painter.setBrush(QBrush(QColor(40, 120, 200)))
painter.setPen(Qt.NoPen)
painter.drawEllipse(10, 10, size-20, size-20)
# Traffic light circle
painter.setBrush(QBrush(QColor(50, 50, 50)))
painter.setPen(QPen(QColor(30, 30, 30), 10))
painter.drawEllipse(size//4, size//4, size//2, size//2)
# Red light
painter.setBrush(QBrush(QColor(240, 30, 30)))
painter.setPen(Qt.NoPen)
painter.drawEllipse(size//2.5, size//3.5, size//5, size//5)
# Yellow light
painter.setBrush(QBrush(QColor(240, 240, 30)))
painter.setPen(Qt.NoPen)
painter.drawEllipse(size//2.5, size//2.3, size//5, size//5)
# Green light
painter.setBrush(QBrush(QColor(30, 200, 30)))
painter.setPen(Qt.NoPen)
painter.drawEllipse(size//2.5, size//1.7, size//5, size//5)
painter.end()
return pixmap
def create_app_icons(output_dir):
"""Create application icons in various formats"""
os.makedirs(output_dir, exist_ok=True)
# Create icons in different sizes
sizes = [16, 32, 48, 64, 128, 256, 512]
for size in sizes:
icon = generate_app_icon(size)
icon.save(os.path.join(output_dir, f"icon_{size}.png"))
# Save main icon
icon = generate_app_icon(512)
icon.save(os.path.join(output_dir, "icon.png"))
print(f"App icons created in {output_dir}")
return os.path.join(output_dir, "icon.png")
def create_splash_image(output_dir, width=600, height=350):
"""Create a splash screen image"""
os.makedirs(output_dir, exist_ok=True)
pixmap = QPixmap(width, height)
pixmap.fill(QColor(40, 40, 45))
painter = QPainter(pixmap)
painter.setRenderHint(QPainter.Antialiasing, True)
# Draw app icon at the top
app_icon = generate_app_icon(120)
painter.drawPixmap(width//2 - 60, 30, app_icon)
# Draw text
painter.setPen(QColor(240, 240, 240))
title_font = QFont("Arial", 24)
title_font.setBold(True)
painter.setFont(title_font)
painter.drawText(QRect(0, 160, width, 40), Qt.AlignCenter, "Traffic Monitoring System")
subtitle_font = QFont("Arial", 12)
painter.setFont(subtitle_font)
painter.drawText(QRect(0, 210, width, 30), Qt.AlignCenter, "Advanced traffic analysis with OpenVINO acceleration")
version_font = QFont("Arial", 10)
painter.setFont(version_font)
painter.drawText(QRect(0, height-30, width, 20), Qt.AlignCenter, "Version 1.0")
painter.end()
# Save splash image
output_path = os.path.join(output_dir, "splash.png")
pixmap.save(output_path)
print(f"Splash image created at {output_path}")
return output_path
if __name__ == "__main__":
# For testing icon generation
import sys
from PySide6.QtWidgets import QApplication
app = QApplication(sys.argv)
resources_dir = os.path.join(os.path.dirname(os.path.dirname(os.path.abspath(__file__))), "resources")
# Create icons
create_app_icons(os.path.join(resources_dir, "icons"))
# Create splash image
create_splash_image(resources_dir)
print("Resource generation complete!")