feat: v0.1.0更新
BIN
resources/app_icon.ico
Normal file
|
After Width: | Height: | Size: 5.0 KiB |
1
resources/app_icon.rc
Normal file
@@ -0,0 +1 @@
|
||||
IDI_ICON1 ICON "app_icon.ico"
|
||||
16
resources/convert_to_ico.py
Normal file
@@ -0,0 +1,16 @@
|
||||
#!/usr/bin/env python3
|
||||
"""将PNG图标转换为ICO格式"""
|
||||
|
||||
from PIL import Image
|
||||
import os
|
||||
|
||||
def png_to_ico(png_path, ico_path):
|
||||
"""将PNG转换为ICO"""
|
||||
img = Image.open(png_path)
|
||||
# ICO文件支持多种尺寸,Windows会根据需要选择合适的尺寸
|
||||
img.save(ico_path, format='ICO', sizes=[(16, 16), (32, 32), (48, 48), (64, 64), (128, 128), (256, 256)])
|
||||
print(f"Created: {ico_path}")
|
||||
|
||||
if __name__ == "__main__":
|
||||
png_to_ico("icons/app_icon.png", "app_icon.ico")
|
||||
print("\nICO file generated successfully!")
|
||||
85
resources/generate_icons.py
Normal file
@@ -0,0 +1,85 @@
|
||||
#!/usr/bin/env python3
|
||||
"""生成D330Viewer所需的图标"""
|
||||
|
||||
from PIL import Image, ImageDraw
|
||||
import os
|
||||
|
||||
def create_icon(size, bg_color, fg_color, shape, filename):
|
||||
"""创建一个简单的图标"""
|
||||
img = Image.new('RGBA', (size, size), (0, 0, 0, 0))
|
||||
draw = ImageDraw.Draw(img)
|
||||
margin = size // 8
|
||||
|
||||
if shape == 'play':
|
||||
# 播放三角形
|
||||
points = [(margin, margin), (margin, size - margin), (size - margin, size // 2)]
|
||||
draw.polygon(points, fill=fg_color)
|
||||
|
||||
elif shape == 'stop':
|
||||
# 停止方块
|
||||
draw.rectangle([margin, margin, size - margin, size - margin], fill=fg_color)
|
||||
|
||||
elif shape == 'camera':
|
||||
# 相机图标
|
||||
draw.ellipse([margin, margin, size - margin, size - margin], outline=fg_color, width=3)
|
||||
draw.ellipse([size//3, size//3, 2*size//3, 2*size//3], fill=fg_color)
|
||||
|
||||
elif shape == 'save':
|
||||
# 保存图标
|
||||
draw.rectangle([margin, margin, size - margin, size - margin], outline=fg_color, width=3)
|
||||
draw.rectangle([margin*2, margin, size - margin*2, margin*3], fill=fg_color)
|
||||
|
||||
elif shape == 'folder':
|
||||
# 文件夹图标
|
||||
draw.rectangle([margin, size//3, size - margin, size - margin], outline=fg_color, width=3)
|
||||
draw.rectangle([margin, size//3, size//2, size//3 + margin], fill=fg_color)
|
||||
|
||||
elif shape == 'refresh':
|
||||
# 刷新图标
|
||||
draw.arc([margin, margin, size - margin, size - margin], 45, 315, fill=fg_color, width=3)
|
||||
draw.polygon([(size - margin, margin*2), (size - margin, margin*3), (size - margin*2, margin*2.5)], fill=fg_color)
|
||||
|
||||
elif shape == 'connect':
|
||||
# 连接图标
|
||||
draw.ellipse([margin, margin, size//2, size//2], fill=fg_color)
|
||||
draw.ellipse([size//2, size//2, size - margin, size - margin], fill=fg_color)
|
||||
draw.line([size//4, size//4, 3*size//4, 3*size//4], fill=fg_color, width=3)
|
||||
|
||||
elif shape == 'clear':
|
||||
# 清除图标
|
||||
draw.line([margin, margin, size - margin, size - margin], fill=fg_color, width=3)
|
||||
draw.line([size - margin, margin, margin, size - margin], fill=fg_color, width=3)
|
||||
|
||||
elif shape == 'app':
|
||||
# 应用图标
|
||||
draw.rectangle([margin, margin*2, size - margin, size - margin], fill=bg_color, outline=fg_color, width=3)
|
||||
draw.ellipse([size//4, size//3, 3*size//4, 2*size//3], fill=fg_color)
|
||||
draw.rectangle([size//3, margin, 2*size//3, margin*2], fill=fg_color)
|
||||
|
||||
img.save(filename)
|
||||
print(f"Created: {filename}")
|
||||
|
||||
if __name__ == "__main__":
|
||||
icons_dir = "icons"
|
||||
os.makedirs(icons_dir, exist_ok=True)
|
||||
|
||||
# 颜色方案 - 使用白色/浅色图标,确保在任何背景上都可见
|
||||
white_color = (255, 255, 255, 255) # 白色
|
||||
light_gray = (220, 220, 220, 255) # 浅灰色
|
||||
transparent = (0, 0, 0, 0) # 透明背景
|
||||
|
||||
# 为应用图标使用深色背景
|
||||
app_bg_color = (33, 150, 243, 255) # 蓝色背景
|
||||
|
||||
# 生成图标 - 所有按钮图标使用白色,透明背景
|
||||
create_icon(64, transparent, white_color, 'play', f'{icons_dir}/start.png')
|
||||
create_icon(64, transparent, white_color, 'stop', f'{icons_dir}/stop.png')
|
||||
create_icon(64, transparent, white_color, 'camera', f'{icons_dir}/camera.png')
|
||||
create_icon(64, transparent, white_color, 'save', f'{icons_dir}/save.png')
|
||||
create_icon(64, transparent, white_color, 'folder', f'{icons_dir}/folder.png')
|
||||
create_icon(64, transparent, white_color, 'refresh', f'{icons_dir}/refresh.png')
|
||||
create_icon(64, transparent, white_color, 'connect', f'{icons_dir}/connect.png')
|
||||
create_icon(64, transparent, white_color, 'clear', f'{icons_dir}/clear.png')
|
||||
create_icon(128, app_bg_color, white_color, 'app', f'{icons_dir}/app_icon.png')
|
||||
|
||||
print("\nAll icons generated successfully!")
|
||||
BIN
resources/icons/app_icon.png
Normal file
|
After Width: | Height: | Size: 599 B |
BIN
resources/icons/camera.png
Normal file
|
After Width: | Height: | Size: 442 B |
BIN
resources/icons/clear.png
Normal file
|
After Width: | Height: | Size: 437 B |
BIN
resources/icons/connect.png
Normal file
|
After Width: | Height: | Size: 316 B |
BIN
resources/icons/folder.png
Normal file
|
After Width: | Height: | Size: 192 B |
BIN
resources/icons/refresh.png
Normal file
|
After Width: | Height: | Size: 382 B |
BIN
resources/icons/save.png
Normal file
|
After Width: | Height: | Size: 206 B |
BIN
resources/icons/start.png
Normal file
|
After Width: | Height: | Size: 331 B |
BIN
resources/icons/stop.png
Normal file
|
After Width: | Height: | Size: 180 B |
13
resources/resources.qrc
Normal file
@@ -0,0 +1,13 @@
|
||||
<RCC>
|
||||
<qresource prefix="/icons">
|
||||
<file>icons/app_icon.png</file>
|
||||
<file>icons/start.png</file>
|
||||
<file>icons/stop.png</file>
|
||||
<file>icons/camera.png</file>
|
||||
<file>icons/save.png</file>
|
||||
<file>icons/folder.png</file>
|
||||
<file>icons/refresh.png</file>
|
||||
<file>icons/connect.png</file>
|
||||
<file>icons/clear.png</file>
|
||||
</qresource>
|
||||
</RCC>
|
||||