refactor: 全面重构代码并加白话注释,移动全局并行,去掉去向/重复记录
- 重构后端与前端,全程大白话注释(不懂程序也能看懂) - 移动阶段改为全局并行(MoveAll,工人数=CPU核心数) - 去掉记录每个文件搬去哪了(删除去向回填,解决写库卡顿) - 去掉重复文件标记与统计:重复判定改为 MD5+路径都相同才算,重复则原地忽略不移动;MD5 相同但路径不同仍照常搬 - 媒体库去掉归类目录列,看板去掉重复/归类分布统计
This commit is contained in:
@@ -2,12 +2,17 @@ package classify
|
||||
|
||||
import "fmt"
|
||||
|
||||
// neutralMargin 判定明暗主导的最小分差:两分差幅小于该值视为中性图
|
||||
// neutralMargin 判定"中性图"的最小分差:
|
||||
// 如果亮色占比和暗色占比相差不到这个值,就认为这张图不亮不暗,归为「mid」中性。
|
||||
const neutralMargin = 0.15
|
||||
|
||||
// BrightnessName 判定图片明暗等级,返回如 "dark_70" / "bright_40" / "mid"。
|
||||
// 以主导分差幅判定亮暗:lightScore 高于 darkScore neutralMargin 以上归 bright,
|
||||
// 反之归 dark,两者接近视为中性 mid(不再强制二选一)。
|
||||
// BrightnessName 根据暗色/亮色像素占比,给图片定"明暗等级",返回类似:
|
||||
// - "dark_70" → 暗色像素占 65%~75% 的暗图
|
||||
// - "bright_40" → 亮色像素占 35%~45% 的亮图
|
||||
// - "mid" → 明暗差不多,不好说谁多,归中性
|
||||
//
|
||||
// 判断规则(大白话):谁占得多、而且多出明显一截(超过 neutralMargin),
|
||||
// 就按谁命名,数字是占比取整到 10% 一档。
|
||||
func BrightnessName(darkScore, lightScore float64) string {
|
||||
switch {
|
||||
case lightScore > darkScore+neutralMargin:
|
||||
@@ -19,8 +24,9 @@ func BrightnessName(darkScore, lightScore float64) string {
|
||||
}
|
||||
}
|
||||
|
||||
// brightnessTier 将占比分档到最接近的 10%,表示命中区间 [N-5%, N+5%),最小 10、最大 100。
|
||||
// 例如 0.30~0.39 归 "30",0.96 以上归 "100",避免占比不足却挂高档名。
|
||||
// brightnessTier 把占比(0~1)取整到"最接近的 10%"作为档位数字,范围 10~100。
|
||||
// 例:0.30~0.39 → "30";0.96 以上 → "100"。
|
||||
// 这样文件夹名里的数字不会出现"明明很少却挂个大数字"的情况。
|
||||
func brightnessTier(score float64) int {
|
||||
tier := int(score*100+5) / 10 * 10
|
||||
if tier < 10 {
|
||||
|
||||
Reference in New Issue
Block a user