Skip to content

基于豆包变成实现的go语言的图片大致颜色取色

License

Notifications You must be signed in to change notification settings

OIAPI/read-image-color

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 

Repository files navigation

read-image-color

基于豆包变成实现的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

快速开始

1. 安装工具

# 克隆代码(或直接下载 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

2. 基本使用

(1)友好阅读模式(默认)

适合人工查看,输出格式化的 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%]
======================================

(2)JSON 模式(程序解析)

适合后端/前端调用,输出标准 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

常见问题

  1. Q:提示“找不到 goimports/golangci-lint 命令”?
    A:需将 Go 的 bin 目录($(go env GOPATH)/bin)添加到系统环境变量,参考 Go 环境变量配置

  2. Q:支持哪些图片格式?
    A:默认支持 PNG 和 JPG,如需支持其他格式(如 WebP),可在代码中添加对应导入(如 _ "image/webp")。

  3. Q:如何调整核心颜色的占比阈值(默认≥3%)?
    A:修改 GetMainStats 函数中的 if ratio < 3.0 { continue },将 3.0 改为目标阈值(如 5.0)。

内容由 AI 生成

About

基于豆包变成实现的go语言的图片大致颜色取色

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages