refactor(classify): 重构图片明暗分类逻辑
- 移除固定的明暗阈值等级数组,改用动态分档机制 - 引入 neutralMargin 常量,当两分差幅小于 0.15 时视为中性图 - 修改 BrightnessName 函数,实现三分法分类:bright_N、dark_N、mid - 新增 brightnessTier 辅助函数,将占比分档到最接近的 10% - 完全透明的像素(alpha=0)不再参与明暗统计计算 - 更新错误提示信息,明暗分析失败时按中性 mid 归类 - 调整 README 文档描述,同步更新明暗分类规则说明
This commit is contained in:
@@ -30,7 +30,8 @@ func AnalyzeBrightness(filePath string) (darkScore float64, lightScore float64,
|
||||
return dark, light, nil
|
||||
}
|
||||
|
||||
// analyzeBrightness 统计暗色/亮色像素占比(ITU-R BT.601 亮度公式),大图自动采样加速
|
||||
// analyzeBrightness 统计暗色/亮色像素占比(ITU-R BT.601 亮度公式),大图自动采样加速。
|
||||
// 完全透明的像素(alpha=0)不计入统计。
|
||||
func analyzeBrightness(img image.Image) (darkScore float64, lightScore float64) {
|
||||
bounds := img.Bounds()
|
||||
totalPixels := bounds.Dx() * bounds.Dy()
|
||||
@@ -46,7 +47,10 @@ func analyzeBrightness(img image.Image) (darkScore float64, lightScore float64)
|
||||
|
||||
for y := bounds.Min.Y; y < bounds.Max.Y; y += sampleStep {
|
||||
for x := bounds.Min.X; x < bounds.Max.X; x += sampleStep {
|
||||
r, g, b, _ := img.At(x, y).RGBA()
|
||||
r, g, b, a := img.At(x, y).RGBA()
|
||||
if a == 0 {
|
||||
continue
|
||||
}
|
||||
r8 := uint8(r >> 8)
|
||||
g8 := uint8(g >> 8)
|
||||
b8 := uint8(b >> 8)
|
||||
|
||||
Reference in New Issue
Block a user