- 🎨 智能颜色提取 - 从图片中自动提取主色调调色板
- 🎵 MP3封面提取 - 支持从MP3文件中提取专辑封面并分析颜色
- 🎯 智能过滤 - 排除黑白颜色或保留所有颜色选项
- 📊 颜色统计 - 显示每种颜色的出现频率和百分比
- 📋 一键复制 - 轻松复制HEX、RGB颜色值
- 🚀 批量处理 - 支持批量上传和颜色提取
- 🎪 现代化UI - 响应式设计,美观的用户界面
- ⚡ 高性能 - 基于Canvas API实现快速颜色分析
- Python CLI 版本 - 命令行版本,基于 Python 实现
- Node.js CLI 版本 - 命令行版本,基于 Node.js 实现
- Node.js 18+
- npm 或 yarn
- 克隆项目
git clone https://github.com/Domdkw/theme-color-extraction.git
cd theme-color-extraction- 安装依赖
npm install- 启动开发服务器
npm run dev- 打开浏览器访问
http://localhost:5173
# 构建项目
npm run build
# 预览生产版本
npm run preview-
上传图片
- 点击"上传图片"按钮选择图片文件
- 支持JPG、PNG、WebP等常见格式
-
上传MP3文件
- 点击"上传MP3"按钮选择音频文件
- 自动提取MP3文件中的专辑封面
-
设置提取选项
- 过滤模式:
- 排除黑白: 过滤掉黑白灰色调
- 全部颜色: 保留所有颜色
- 数量模式:
- 全部提取: 提取所有主要颜色
- 单一颜色: 只提取最主要的颜色
- 过滤模式:
-
查看结果
- 每个文件会显示预览图和提取的颜色调色板
- 点击颜色块可复制HEX或RGB值
- 查看每种颜色的出现频率统计
- 支持同时上传多个文件进行批量颜色提取
- 实时显示处理进度和状态
- 可单独重新处理每个文件
theme-color-extraction/
├── components/ # React组件
│ ├── ImageCard.tsx # 图片卡片组件
│ └── SettingsPanel.tsx # 设置面板组件
├── utils/ # 工具函数
│ └── colorUtils.ts # 颜色处理工具
├── types.ts # TypeScript类型定义
├── App.tsx # 主应用组件
├── index.tsx # 应用入口
└── package.json # 项目配置
- 前端框架: React 19.2.3
- 开发语言: TypeScript 5.8.2
- 构建工具: Vite 6.2.0
- 样式: 内联CSS + Tailwind风格
- 颜色分析: Canvas API
项目使用Canvas API进行图像处理,通过以下步骤提取颜色:
- 将图片缩放到100x100像素以优化性能
- 获取所有像素的RGB值
- 统计颜色出现频率
- 按频率排序并过滤重复颜色
- 返回最常出现的颜色调色板
使用HTML5 Audio API和File API从MP3文件中提取专辑封面信息。
提取图片调色板的主要函数。
参数:
imageUrl: 图片URL或Data URLfilterMode: 过滤模式 (FilterMode.ALL或FilterMode.EXCLUDE_BW)maxColors: 最大颜色数量 (默认: 5)
返回值: Promise<ColorPalette[]>
从MP3文件中提取专辑封面。
参数:
file: MP3文件对象
返回值: Promise<string | null>
欢迎提交Issue和Pull Request来改进这个项目!
MIT License
感谢所有为Gemini做出贡献的开发者。
