一个基于 Python 构建的 Serverless API,它可以根据你提供的图片 URL,快速分析并返回该图片的主色调。项目被设计为在 Vercel 上进行一键部署,非常适合轻量级应用和个人项目。
- 快速颜色提取: 输入任意图片的 URL,即可获得其主色调的十六进制 (HEX) 颜色码。
- 简洁高效: 使用 Python 和成熟的图像处理库,代码简洁且易于维护。
- Serverless 架构: 部署在 Vercel 平台,无需管理服务器,具备高可用性和自动扩缩容能力。
- 广泛的图片格式支持: 依赖 Pillow 库,支持包括 JPEG, PNG, GIF, WebP 在内的多种主流图片格式。
- 性能优化: 通过先将图片缩放为缩略图再进行分析,极大地减少了网络下载和颜色计算的耗时。
GET /api/color
参数 | 类型 | 描述 | 是否必须 |
---|---|---|---|
url |
string | 待分析图片的公开 URL | 是 |
将 [YOUR_DEPLOYED_URL]
替换为你部署后 Vercel 提供的 URL。
curl "[YOUR_DEPLOYED_URL]/api/color?url=https://www.google.com/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png"
{
"RGB": "#4285f4"
}
{
"error": "Missing image url"
}
请注意,为了安全起见,本 API 默认配置了严格的跨域资源共享(CORS)策略。
在 vercel.json
文件中,Access-Control-Allow-Origin
被设置为一个特定的域名(https://peter267.github.io
)。
这意味着只有来自该域名的前端页面发起的请求才会被浏览器允许。来自任何其他网站(包括本地的 localhost)的调用都将被浏览器阻止并报告CORS错误。
如果您 Fork 本项目并自行部署,您必须修改 vercel.json
文件,将 Access-Control-Allow-Origin
的值更改为您自己的前端网站域名,否则 API 将无法在您的网站上正常工作。
- 后端语言: Python
- 部署平台: Vercel
- 核心 Python 库:
requests
: 用于从 URL 下载图片。Pillow
: 强大的图像处理库,用于打开、缩放和处理图片。colorgram.py
: 用于从图片中轻松提取颜色。
- 安装 Python (版本 3.8 或更高)。
- 安装 Node.js (用于安装 Vercel CLI)。
- 安装 Vercel CLI:
npm install -g vercel
-
克隆仓库
git clone https://github.com/Peter267/color-api.git cd color-api
-
安装 Python 依赖 建议在虚拟环境中进行此操作。
# (可选) 创建并激活虚拟环境 python -m venv venv source venv/bin/activate # on Windows, use `venv\Scripts\activate` # 安装依赖 pip install -r requirements.txt
-
本地运行 使用 Vercel CLI 可以在本地模拟 Serverless 环境。
vercel dev
服务启动后,你可以在
http://localhost:3000
访问你的 API。 -
部署到 Vercel 在项目根目录运行以下命令,并根据提示操作即可完成部署。
vercel
或者点击按钮部署 / Fork 仓库自行部署
.
├── api/
│ └── index.py # Serverless 函数核心逻辑
├── README.md # 项目说明文件
├── requirements.txt # Python 依赖列表
└── vercel.json # Vercel 部署配置文件
requests
Pillow
colorgram.py
-
图片大小建议不要过大
-
图片URL必须可公开访问
-
API调用频率请参考Vercel的无服务器函数限制
https://color.api.peter267.dpdns.org
为体验地址,仅供测试与功能演示。您可以直接通过浏览器访问,或使用 curl
命令进行体验。
若需在实际生产或个人网站中集成使用,请您自行部署服务。
欢迎提交 Issue 和 Pull Request 来改进这个项目。
本项目采用 MIT License 开源许可。