# PhotoFolderOrganizer **Repository Path**: libihao520/photo-folder-organizer ## Basic Information - **Project Name**: PhotoFolderOrganizer - **Description**: 基于 .NET 8 + Avalonia UI + SQLite 的本地相册整理工具:拖拽归类、批量修改 EXIF 拍摄日期、pHash 重复照片检测,物理移动文件、原图安全有保障。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-09-29 - **Last Updated**: 2026-09-29 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # PhotoFolderOrganizer 相册整理 本地相册整理工具,**物理移动文件归类,不做虚拟相册**。 ## 技术栈 .NET 8 · Avalonia UI 11 · SQLite · C# · MVVM(CommunityToolkit.Mvvm) ## 功能 - **目录扫描**:增量扫描 JPG / PNG / HEIC(macOS 借助系统 `sips` 解码),读取 EXIF 拍摄时间写入 SQLite,后台执行不阻塞 UI - **拖拽归类**:将「未归类」照片拖到左侧分类树,安全移动三步走——复制到目标目录 → SHA256 全量校验 → 校验通过才删除源文件,任何失败自动回滚、保留原图 - **EXIF 修改**:多选批量修改拍摄日期(优先 exiftool 无损写入、支持 HEIC;否则 ImageSharp 高质量重写 JPG/PNG),同步更新文件时间戳 - **重复检测**:pHash 感知哈希(32×32 DCT → 64 位汉明距离)识别画面相同的照片,文件名不同也能找出;成对展示、阈值可调、一键保留其一 - **缩略图缓存**:EXIF 自动旋转 + 缩放后缓存至 `.photoindex/thumbs`,同图不重复生成,pHash 在生成缩略图时顺带计算 - **大图预览**:双击查看原图,方向键翻页,HEIC 自动回退缩略图 ## 目录约定 ``` 相册根目录/ ├── 未归类/ # 新照片先放这里 ├── 已归类/ # 分类子文件夹(软件内拖拽归类) └── .photoindex/ # SQLite 索引 + 缩略图缓存(自动创建,勿手动删改) ``` ## 使用 1. 启动后在「设置」页选择相册根目录(自动创建上述目录结构) 2. 把照片批量放进「未归类」文件夹,回到软件点击「重新扫描」 3. 选中照片(支持多选)拖到左侧分类即可完成归类;「新建分类」随时增加 4. 「重复照片」页点击开始检测,逐组选择保留 > macOS 建议安装 exiftool 以获得完整 EXIF/HEIC 修改能力:`brew install exiftool` ## 构建 ```bash dotnet build PhotoFolderOrganizer.sln # macOS (Apple Silicon) 发布 dotnet publish src/PhotoFolderOrganizer -c Release -r osx-arm64 ``` ## 说明 - 程序只操作「未归类」「已归类」两个目录内的图片文件,索引与磁盘真实状态不一致时以磁盘为准,扫描自动校正 - 数据库、缩略图、日志均位于相册根目录的 `.photoindex` 隐藏文件夹,更换根目录在设置页重新打开即可