基于豆包变成实现的go语言的图片大致颜色取色
一个基于 Go 语言的图片颜色分析工具,支持提取图片的 RGB/HEX/HSV 量化数据、核心颜色占比统计,无任何语义化颜色名称,仅输出数值化结果,适合数据统计、机器视觉分析等场景。
- 数值化输出:仅保留 RGB、HEX、HSV 量化数据,无颜色名称,聚焦数据本身
- 核心颜色统计:按 HSV 色调聚类,自动过滤低占比颜色(≥3%),最多保留 8 种核心颜色
- 多格式支持:提供「友好阅读模式」和「JSON 模式」,满足人工查看和程序解析需求
- 智能缩放:自动适配图片尺寸(默认 20x20),平衡分析精度与处理速度
- 代码规范:通过
golangci-lint全量检查,符合 Go 官方编码规范
- Go 版本:1.18+(推荐 1.20+)
- 依赖包:仅需一个第三方图片缩放库
go get github.com/nfnt/resize@latest
# 克隆代码(或直接下载 main.go)
git clone https://github.com/OIAPI/read-image-color.git
cd read-image-color
# 安装依赖
go mod init read-image-color
go get github.com/nfnt/resize@latest适合人工查看,输出格式化的 RGB/HEX/HSV 数据:
go run main.go -path ./test.jpg示例输出:
======================================
📷 图片路径:./test.jpg
🖼️ 处理尺寸:20x20 像素(总像素:400)
🎯 整体平均数据:
- 平均RGB:[242, 128, 65]
- 平均HEX:#F28041
- 平均HSV:[H:22.5°, S:73.2%, V:94.9%]
🏆 核心颜色统计(共 2 种,占比≥3%):
1. 占比:68.5% | 像素数:274 | RGB:[245,125,60] | HEX:#F57D3C | HSV:[H:21.8°, S:75.5%, V:96.1%]
2. 占比:22.3% | 像素数:89 | RGB:[250,180,120] | HEX:#FAB478 | HSV:[H:25.2°, S:52.0%, V:98.0%]
======================================
适合后端/前端调用,输出标准 JSON 格式:
go run main.go -path ./test.jpg -format json -scale 25示例输出:
{
"image_path": "./test.jpg",
"process_size": 25,
"total_pixel": 625,
"avg_rgb": [242, 128, 65],
"avg_hex": "#F28041",
"avg_hsv": {
"H": 22.5,
"S": 73.2,
"V": 94.9
},
"main_stats": [
{
"count": 428,
"ratio": 68.5,
"represent_rgb": [245, 125, 60],
"represent_hex": "#F57D3C",
"represent_hsv": {
"H": 21.8,
"S": 75.5,
"V": 96.1
}
}
]
}| 参数名 | 类型 | 必选 | 默认值 | 说明 |
|---|---|---|---|---|
-path |
string | 是 | 无 | 图片路径(支持 PNG/JPG 格式,相对路径或绝对路径均可,如 ./sunset.jpg) |
-format |
string | 否 | human |
输出格式:human(友好阅读)、json(标准 JSON) |
-scale |
uint | 否 | 0 | 手动缩放尺寸(如 25 表示 25x25 像素,建议 15-50,0 表示智能缩放) |
本项目使用 golangci-lint 保障代码规范,执行以下命令可自行检查:
# 1. 安装 golangci-lint(仅首次需要)
curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b $(go env GOPATH)/bin v1.54.2
# 2. 执行全量检查
golangci-lint run ./...| 字段名 | 含义 |
|---|---|
process_size |
图片处理时的缩放尺寸(N x N),尺寸越大分析越精细,但速度越慢 |
total_pixel |
处理后的总像素数(= process_size × process_size) |
avg_rgb |
全图像素的 RGB 平均值(每个通道 0-255) |
avg_hex |
平均 RGB 对应的 16 进制颜色码(如 #FF5733,可直接用于设计工具) |
avg_hsv |
平均 HSV 值(H: 0-360° 色调,S: 0-100% 饱和度,V: 0-100% 亮度) |
main_stats |
核心颜色列表(占比≥3%),按占比降序排列,包含像素数、代表 RGB/HEX/HSV |
-
Q:提示“找不到 goimports/golangci-lint 命令”?
A:需将 Go 的bin目录($(go env GOPATH)/bin)添加到系统环境变量,参考 Go 环境变量配置。 -
Q:支持哪些图片格式?
A:默认支持 PNG 和 JPG,如需支持其他格式(如 WebP),可在代码中添加对应导入(如_ "image/webp")。 -
Q:如何调整核心颜色的占比阈值(默认≥3%)?
A:修改GetMainStats函数中的if ratio < 3.0 { continue },将3.0改为目标阈值(如5.0)。
内容由 AI 生成