diff --git a/icons/amber-pm-logo.icns b/icons/amber-pm-logo.icns deleted file mode 100644 index f5a12e75..00000000 Binary files a/icons/amber-pm-logo.icns and /dev/null differ diff --git a/icons/amber-pm-logo.png b/icons/amber-pm-logo.png deleted file mode 100644 index 812b1c96..00000000 Binary files a/icons/amber-pm-logo.png and /dev/null differ diff --git a/icons/convert-to-png.py b/icons/convert-to-png.py new file mode 100644 index 00000000..4f86eff5 --- /dev/null +++ b/icons/convert-to-png.py @@ -0,0 +1,179 @@ +#!/usr/bin/env python3 +""" +图标转换脚本 - 将spark-store.svg转换为标准尺寸的PNG图标 +支持尺寸: 64x64, 128x128, 256x256, 512x512 +""" + +import os +import sys +from PIL import Image +import cairosvg + +def convert_svg_to_png(svg_path, output_dir, sizes=[64, 128, 256, 512]): + """ + 将SVG文件转换为多种尺寸的PNG图标 + + Args: + svg_path: SVG文件路径 + output_dir: 输出目录 + sizes: 需要生成的尺寸列表 + """ + + # 检查输入文件是否存在 + if not os.path.exists(svg_path): + print(f"错误: 找不到SVG文件 {svg_path}") + return False + + # 创建输出目录(如果不存在) + if not os.path.exists(output_dir): + os.makedirs(output_dir) + print(f"创建输出目录: {output_dir}") + + # 获取文件名(不含扩展名) + base_name = os.path.splitext(os.path.basename(svg_path))[0] + + # 读取SVG文件 + with open(svg_path, 'rb') as svg_file: + svg_data = svg_file.read() + + # 为每个尺寸生成PNG + for size in sizes: + output_filename = f"{base_name}_{size}x{size}.png" + output_path = os.path.join(output_dir, output_filename) + + try: + # 使用cairosvg将SVG转换为PNG + cairosvg.svg2png( + bytestring=svg_data, + write_to=output_path, + output_width=size, + output_height=size + ) + print(f"✓ 已生成: {output_filename} ({size}x{size})") + + # 验证生成的PNG文件 + with Image.open(output_path) as img: + actual_size = img.size + if actual_size == (size, size): + print(f" - 尺寸验证通过: {actual_size}") + else: + print(f" - 警告: 实际尺寸为 {actual_size}") + + except Exception as e: + print(f"✗ 生成 {size}x{size} 时出错: {str(e)}") + return False + + return True + +def generate_hicolor_icons(svg_path, base_output_dir): + """ + 生成符合hicolor主题标准的图标目录结构 + + Args: + svg_path: SVG文件路径 + base_output_dir: 基础输出目录 + """ + + # 定义标准尺寸和对应的子目录 + icon_sizes = { + 64: "64x64/apps", + 128: "128x128/apps", + 256: "256x256/apps", + 512: "512x512/apps" + } + + # 获取文件名(不含扩展名) + base_name = os.path.splitext(os.path.basename(svg_path))[0] + + # 为每个尺寸创建目录并生成图标 + for size, subdir in icon_sizes.items(): + output_dir = os.path.join(base_output_dir, subdir) + + if not os.path.exists(output_dir): + os.makedirs(output_dir) + + output_path = os.path.join(output_dir, f"{base_name}.png") + + try: + # 读取SVG并转换 + with open(svg_path, 'rb') as svg_file: + svg_data = svg_file.read() + + cairosvg.svg2png( + bytestring=svg_data, + write_to=output_path, + output_width=size, + output_height=size + ) + print(f"✓ 已生成: {output_dir}/{base_name}.png ({size}x{size})") + + except Exception as e: + print(f"✗ 生成 {size}x{size} 时出错: {str(e)}") + return False + + return True + +def main(): + """ + 主函数 + """ + # 默认配置 + svg_file = "spark-store.svg" + output_dir = "spark-store-icons" + hicolor_dir = "hicolor" + + print("=" * 50) + print("Spark Store 图标转换工具") + print("=" * 50) + + # 检查是否安装了必要的库 + try: + import PIL + import cairosvg + except ImportError as e: + print("错误: 缺少必要的Python库") + print("请安装依赖:") + print(" pip install Pillow cairosvg") + return + + # 检查SVG文件 + if not os.path.exists(svg_file): + print(f"错误: 在当前目录找不到 {svg_file}") + print(f"请确保 {svg_file} 文件存在于当前目录") + return + + print(f"\n输入文件: {svg_file}") + + # 生成普通PNG图标 + print("\n[1/2] 生成标准尺寸PNG图标...") + if convert_svg_to_png(svg_file, output_dir): + print(f"✓ 所有PNG图标已生成到: {output_dir}/") + else: + print("✗ 生成PNG图标失败") + return + + # 生成hicolor格式图标 + print("\n[2/2] 生成hicolor格式图标...") + if generate_hicolor_icons(svg_file, hicolor_dir): + print(f"✓ hicolor图标已生成到: {hicolor_dir}/") + else: + print("✗ 生成hicolor图标失败") + return + + print("\n" + "=" * 50) + print("✓ 图标转换完成!") + print("=" * 50) + print("\n生成的文件:") + print(f"1. 普通PNG图标: {output_dir}/") + print(f" - spark-store_64x64.png") + print(f" - spark-store_128x128.png") + print(f" - spark-store_256x256.png") + print(f" - spark-store_512x512.png") + print(f"\n2. hicolor格式图标: {hicolor_dir}/") + print(f" - {hicolor_dir}/64x64/apps/spark-store.png") + print(f" - {hicolor_dir}/128x128/apps/spark-store.png") + print(f" - {hicolor_dir}/256x256/apps/spark-store.png") + print(f" - {hicolor_dir}/512x512/apps/spark-store.png") + +if __name__ == "__main__": + main() diff --git a/icons/hicolor/128x128/apps/spark-store.png b/icons/hicolor/128x128/apps/spark-store.png new file mode 100644 index 00000000..745665da Binary files /dev/null and b/icons/hicolor/128x128/apps/spark-store.png differ diff --git a/icons/hicolor/256x256/apps/spark-store.png b/icons/hicolor/256x256/apps/spark-store.png new file mode 100644 index 00000000..c9ebe5fa Binary files /dev/null and b/icons/hicolor/256x256/apps/spark-store.png differ diff --git a/icons/hicolor/512x512/apps/spark-store.png b/icons/hicolor/512x512/apps/spark-store.png new file mode 100644 index 00000000..ace94f08 Binary files /dev/null and b/icons/hicolor/512x512/apps/spark-store.png differ diff --git a/icons/hicolor/64x64/apps/spark-store.png b/icons/hicolor/64x64/apps/spark-store.png new file mode 100644 index 00000000..053cf6bf Binary files /dev/null and b/icons/hicolor/64x64/apps/spark-store.png differ diff --git a/icons/spark-store.png b/icons/spark-store.png new file mode 100644 index 00000000..ace94f08 Binary files /dev/null and b/icons/spark-store.png differ