From 9ed579d04e52540604d34e443dbcaf47a59677fc Mon Sep 17 00:00:00 2001 From: Odboy Date: Sun, 9 Mar 2025 21:19:48 +0800 Subject: [PATCH] =?UTF-8?q?docs:=20=E9=87=8D=E5=86=99=20README=EF=BC=8C?= =?UTF-8?q?=E5=90=8C=E6=AD=A5=E5=9B=BE=E7=89=87/=E8=A7=86=E9=A2=91?= =?UTF-8?q?=E5=88=86=E7=B1=BB=E6=95=B4=E7=90=86=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 123 ++++++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 91 insertions(+), 32 deletions(-) diff --git a/README.md b/README.md index cdc6992..9fd63c8 100644 --- a/README.md +++ b/README.md @@ -1,41 +1,25 @@ # kenaito-media-picker -媒体分辨率分类工具 +媒体分辨率分类整理工具:一键扫描目录下所有图片与视频,按横屏 / 竖屏 / 等比和分辨率自动归类到对应子目录。 -# 简介 +## 功能特性 -显示器的分辨率:通常表示为水平像素数乘以垂直像素数。 +- **图片 / 视频双支持**:扫描当前目录(递归),自动识别图片与视频文件 +- **标准分辨率归类**:720P、1080P、2K、2.5K、影院 2K、DCI 4K、8K 及带鱼屏(UltraWide 2K/3K/4K)等标准规格单独建目录 +- **非标分辨率归类**:按像素区间自动归入 1K ~ 9K / 普通 / 原图(原画质)目录 +- **方向区分**:横屏、竖屏、等比(正方形)分开整理,GIF 单独处理 +- **异常兜底**:读取失败、不支持的格式自动归入「读取异常」「已忽略」目录 +- **自动整理**:无需人工干预,扫描 → 分析 → 移动一次完成,跨磁盘自动降级为复制后删除 +- **零依赖安装**:视频信息读取使用内嵌的 `ffprobe.exe`(Windows x64),无需额外安装 ffmpeg -常见的显示器分辨率包括1280x720、1920x1080、2560x1440、3840x2160、5120x2880和7680x4320六种。 +## 支持的格式 -# 附加说明 +| 类型 | 格式 | +|------|------| +| 图片 | JPG / JPEG / JPE / JFIF / PNG / GIF / BMP / WEBP / PSB,PSD 单独归入「图片_PSD」 | +| 视频 | MP4 / AVI / MOV / MKV / MPG / M4V / WMV / WEBM / FLV / TS / RM / RMVB / 3GP / 3G2 | -- 以什么区分分辨率? - -```text -分辨率主要看纵向像素,也就是后面的数字,例如1.5k(2400×1080)本质上也是1080p的一种 -``` - -- 显示器分辨率有哪几种? - -```text -常见分辨率有6种,分别是720P、1080P、2K、4K、5K和8K。 - -也可以写成1280x720、1920x1080、2560x1440、3840x2160、5120x2880和7680x4320。 -``` - -- 虽然没有3K分辨率,但是如何计算3K分辨率呢? - -```text -1k分辨率是指1024x768的分辨率。 - -3K分辨率是(1024*3)x(768*3) --> 3072x2304 -``` - -# 项目依赖 - -- 依赖ffmpeg, https://ffmpeg.org/download.html -- https://github.com/BtbN/FFmpeg-Builds/releases +> 判断依据为文件 MIME 信息 + 扩展名双重识别,扩展名大小写不敏感。 ## 构建编译 @@ -43,9 +27,84 @@ sh build.sh ``` +- 依赖 Go 1.19+(`go.mod` 指定 1.19) +- `build.sh` 使用 `upx` 压缩产物,输出 `kenaito-media-picker.exe`(Windows 单文件) +- 编译所需工具(ffmpeg / upx)压缩包已放在 `doc/` 目录,按需解压使用 + ## 使用方法 ```text # 双击有风险, 双击需谨慎 -将OdMediaPickerRelease.exe拖拽到需要整理的文件夹内,双击运行即可 +将 kenaito-media-picker.exe 拖拽到需要整理的文件夹内,双击运行即可 + +# 或命令行运行 +kenaito-media-picker.exe ``` + +程序启动后有 **5 秒倒计时**,期间可 Ctrl+C 取消;倒计时结束后自动开始整理。 + +## 整理规则 + +执行后,会在当前目录生成一批以 UUID 开头命名的子目录,文件按规则移动(或复制)进去: + +### 图片 + +```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 ~ 9K ← 非标规格按像素区间 +{uid}-图片_横屏_普通 ← 像素不足 1000 +{uid}-图片_横屏_原图 ← 像素 ≥ 10000 +{uid}-图片_竖屏_... ← 竖屏按同样规则(普通 / 1K~9K / 原图) +{uid}-图片_等比_... ← 等比(正方形)按同样规则 +{uid}-图片_GIF ← 所有 GIF 图片 +{uid}-图片_PSD ← 所有 PSD 文件 +{uid}-图片_读取异常 ← 无法读取尺寸的图片 +{uid}-图片_已忽略 ← 不支持格式的图片 +``` + +### 视频 + +```text +{uid}-视频_横屏_720P / 1080P / 2DKP / 2D5KP / 4KP / 4KHP / 8KP +{uid}-视频_横屏_UltraWide2KP / UltraWide3KP / UltraWide4KP +{uid}-视频_横屏_1k ~ 9k / 普通 / 原画质 +{uid}-视频_竖屏_1k ~ 9k / 普通 / 原画质 +{uid}-视频_等比_1k ~ 9k / 普通 / 原画质 +{uid}-视频_横屏_GIF / 视频_竖屏_GIF / 视频_等比_GIF +读取异常 ← 无法读取分辨率的视频 +已忽略 ← 不支持的视频格式 +``` + +> 视频时长与分辨率通过内嵌 `ffprobe.exe` 读取(处理时会临时释放,完成后自动删除)。 + +## 目录结构 + +```text +├── main.go # 程序入口(扫描 → 过滤 → 图片/视频处理) +├── core/ # 核心逻辑:文件扫描、MIME 过滤、图片/视频分组与移动 +├── util/ # 工具:MIME 识别、图片尺寸读取、ffprobe 封装、文件移动 +├── vars/ # 全局状态 + 内嵌 ffprobe.exe(go:embed) +├── doc/ # 构建依赖(ffmpeg / upx 压缩包) +└── build.sh # 编译脚本(upx 压缩) +``` + +## 注意事项 + +- 默认使用**移动**模式,原文件会从源目录移走;同名文件跨磁盘时自动降级为复制 + 删除 +- 每次运行生成独立的 UUID 目录,重复运行不会相互覆盖 +- GIF 图片单独归入「图片_GIF」;GIF 视频按方向归入「视频_*_GIF」 +- 视频处理依赖 Windows 平台的 `ffprobe.exe`(已内嵌),非 Windows 平台需自行调整 + +## License + +Apache 2.0