feat(classify): 添加图片明暗分类功能

- 修改 ImageDir 函数增加 darkScore 和 lightScore 参数
- 实现 BrightnessName 函数计算明暗等级
- 定义暗色和亮色阈值等级数组
- 在 organize.go 中集成图片明暗分析逻辑
- 使用 ITU-R BT.601 公式计算像素亮度
- 为大图实现自动采样加速分析
- 更新 README.md 文档说明明暗分类算法
- 在目录结构中体现明暗等级命名规则
This commit is contained in:
2025-03-29 21:11:14 +08:00
parent 4da4b738e6
commit 99b9460bcd
5 changed files with 149 additions and 25 deletions
+35
View File
@@ -0,0 +1,35 @@
package classify
import "fmt"
// 暗色阈值等级(从高到低)
var darkThresholds = []int{100, 95, 85, 75, 65, 55}
// 亮色阈值等级(从高到低)
var brightThresholds = []int{85, 75, 65, 55, 45, 35, 25, 15}
// BrightnessName 按主导分判定明暗等级,返回如 "dark_100" / "bright_85"。
// 亮色主导(lightScore > darkScore)归 bright,否则归 dark,每张图必归亮暗之一。
func BrightnessName(darkScore, lightScore float64) string {
darkLowest := darkThresholds[len(darkThresholds)-1]
brightLowest := brightThresholds[len(brightThresholds)-1]
if lightScore > darkScore {
picked := brightLowest
for _, t := range brightThresholds {
if lightScore >= float64(t)/100.0 {
picked = t
break
}
}
return fmt.Sprintf("bright_%d", picked)
}
picked := darkLowest
for _, t := range darkThresholds {
if darkScore >= float64(t)/100.0 {
picked = t
break
}
}
return fmt.Sprintf("dark_%d", picked)
}
+5 -3
View File
@@ -35,12 +35,14 @@ func (o Orientation) String() string {
}
}
// ImageDir 返回图片归类子目录名,如 "图片_横屏_1080P" / "图片_GIF"
func ImageDir(ext string, width, height int) string {
// ImageDir 返回图片归类子目录名,如 "图片_横屏_1080P-dark_100" / "图片_GIF"。
// darkScore/lightScore 用于明暗分类(GIF 不做明暗分类,忽略这两项)。
func ImageDir(ext string, width, height int, darkScore, lightScore float64) string {
if strings.EqualFold(ext, ".gif") {
return "图片_GIF"
}
return resolutionDir("图片", ext, width, height)
dir := resolutionDir("图片", ext, width, height)
return dir + "-" + BrightnessName(darkScore, lightScore)
}
// VideoDir 返回视频归类子目录名,如 "视频_竖屏_4k" / "视频_横屏_GIF"