feat(classify): 添加图片明暗分类功能
- 修改 ImageDir 函数增加 darkScore 和 lightScore 参数 - 实现 BrightnessName 函数计算明暗等级 - 定义暗色和亮色阈值等级数组 - 在 organize.go 中集成图片明暗分析逻辑 - 使用 ITU-R BT.601 公式计算像素亮度 - 为大图实现自动采样加速分析 - 更新 README.md 文档说明明暗分类算法 - 在目录结构中体现明暗等级命名规则
This commit is contained in:
@@ -8,6 +8,7 @@
|
||||
- **标准分辨率归类**:720P、1080P、2K、2.5K、影院 2K、DCI 4K、8K 及带鱼屏(UltraWide 2K/3K/4K)等标准规格单独建目录
|
||||
- **非标分辨率归类**:按像素区间(每 1024px 一档)自动归入 1K ~ 19K / 普通 / 原图(原画质)目录
|
||||
- **方向区分**:横屏、竖屏、等比(正方形)分开整理,GIF 单独处理
|
||||
- **明暗分类**:基于 ITU-R BT.601 亮度公式分析每张图片明暗程度,暗色(亮度 < 80)像素占比为 darkScore、亮色(亮度 > 175)像素占比为 lightScore,按主导分在目录名末尾追加 `-dark_100` ~ `-dark_55` / `-bright_85` ~ `-bright_15` 明暗等级
|
||||
- **音频归类**:音频文件单独归入「音频」目录
|
||||
- **异常兜底**:读取失败、不支持的格式自动归入「读取异常」「已忽略」目录
|
||||
- **自动整理**:无需人工干预,扫描 → 分析 → 移动一次完成,跨磁盘自动降级为复制后删除
|
||||
@@ -54,26 +55,26 @@ kenaito-media-picker.exe
|
||||
### 图片
|
||||
|
||||
```text
|
||||
{uid}-图片_横屏_720P ← 1280×720
|
||||
{uid}-图片_横屏_1D5KP ← 1600×900
|
||||
{uid}-图片_横屏_1080P ← 1920×1080
|
||||
{uid}-图片_横屏_2DKP ← 2048×1080(影院 2K)
|
||||
{uid}-图片_横屏_2D5KP ← 2560×1440(2.5K)
|
||||
{uid}-图片_横屏_ultraWide2KP ← 2560×1080(带鱼屏)
|
||||
{uid}-图片_横屏_ultraWide3KP ← 3440×1440(带鱼屏)
|
||||
{uid}-图片_横屏_ultraWide4KP ← 5120×2160(带鱼屏)
|
||||
{uid}-图片_横屏_4KP ← 3840×2160
|
||||
{uid}-图片_横屏_4KHP ← 4096×2160(DCI 4K)
|
||||
{uid}-图片_横屏_8KP ← 7680×4320
|
||||
{uid}-图片_横屏_1K ~ 19K ← 非标规格按像素区间(每 1024px 一档)
|
||||
{uid}-图片_横屏_普通 ← 像素不足 1024
|
||||
{uid}-图片_横屏_原图 ← 像素 ≥ 20480
|
||||
{uid}-图片_竖屏_... ← 竖屏按同样规则(普通 / 1K~19K / 原图)
|
||||
{uid}-图片_等比_... ← 等比(正方形)按同样规则
|
||||
{uid}-图片_GIF ← 所有 GIF 图片
|
||||
{uid}-图片_PSD ← 所有 PSD 文件
|
||||
{uid}-图片_读取异常 ← 无法读取尺寸的图片
|
||||
{uid}-图片_已忽略 ← 不支持格式的图片
|
||||
{uid}-图片_横屏_720P-dark_100 ← 1280×720,暗色主导
|
||||
{uid}-图片_横屏_1D5KP-dark_95 ← 1600×900
|
||||
{uid}-图片_横屏_1080P-bright_85 ← 1920×1080,亮色主导
|
||||
{uid}-图片_横屏_2DKP-dark_75 ← 2048×1080(影院 2K)
|
||||
{uid}-图片_横屏_2D5KP-bright_65 ← 2560×1440(2.5K)
|
||||
{uid}-图片_横屏_ultraWide2KP-dark_55 ← 2560×1080(带鱼屏)
|
||||
{uid}-图片_横屏_ultraWide3KP-bright_45 ← 3440×1440(带鱼屏)
|
||||
{uid}-图片_横屏_ultraWide4KP-dark_85 ← 5120×2160(带鱼屏)
|
||||
{uid}-图片_横屏_4KP-bright_35 ← 3840×2160
|
||||
{uid}-图片_横屏_4KHP-dark_65 ← 4096×2160(DCI 4K)
|
||||
{uid}-图片_横屏_8KP-bright_25 ← 7680×4320
|
||||
{uid}-图片_横屏_1K ~ 19K-bright_15 ← 非标规格按像素区间(每 1024px 一档)
|
||||
{uid}-图片_横屏_普通-dark_100 ← 像素不足 1024
|
||||
{uid}-图片_横屏_原图-bright_85 ← 像素 ≥ 20480
|
||||
{uid}-图片_竖屏_... ← 竖屏按同样规则(普通 / 1K~19K / 原图)
|
||||
{uid}-图片_等比_... ← 等比(正方形)按同样规则
|
||||
{uid}-图片_GIF ← 所有 GIF 图片
|
||||
{uid}-图片_PSD ← 所有 PSD 文件
|
||||
{uid}-图片_读取异常 ← 无法读取尺寸的图片
|
||||
{uid}-图片_已忽略 ← 不支持格式的图片
|
||||
```
|
||||
|
||||
### 视频 / 音频
|
||||
@@ -92,6 +93,16 @@ kenaito-media-picker.exe
|
||||
|
||||
> 视频时长与分辨率通过内嵌 ffprobe 读取(处理时会临时释放到当前目录、完成后自动删除);凡 ffmpeg 支持的视频/音频格式均可识别。
|
||||
|
||||
## 明暗评分算法
|
||||
|
||||
```text
|
||||
brightness = 0.299×R + 0.587×G + 0.114×B (ITU-R BT.601)
|
||||
darkScore = 亮度 < 80 的像素占比
|
||||
lightScore = 亮度 > 175 的像素占比
|
||||
```
|
||||
|
||||
亮色主导(`lightScore > darkScore`)归 `-bright_N`,否则归 `-dark_N`;每张图必归亮暗之一。暗色档位 55/65/75/85/95/100,亮色档位 15/25/35/45/55/65/75/85,取评分命中的最高一档(不足最低档归最低档)。大图(>100 万像素)自动采样加速。
|
||||
|
||||
## 目录结构
|
||||
|
||||
```text
|
||||
@@ -99,7 +110,7 @@ kenaito-media-picker.exe
|
||||
├── internal/
|
||||
│ ├── scanner/ # 文件扫描、MIME 读取、图片/媒体候选过滤
|
||||
│ ├── probe/ # 媒体探测:图片尺寸 + ffprobe 解析 + 内嵌解码器释放
|
||||
│ ├── classify/ # 纯函数归类规则(方向 + 标准分辨率 + K档)
|
||||
│ ├── classify/ # 纯函数归类规则(方向 + 标准分辨率 + K档 + 明暗等级)
|
||||
│ ├── organize/ # 整理编排:探测→归类→收集→移动→记录去向
|
||||
│ ├── mover/ # 文件移动(rename / 跨盘 copy+delete)
|
||||
│ ├── store/ # SQLite 媒体信息持久化
|
||||
|
||||
Reference in New Issue
Block a user