枪战英雄
99.99M · 2026-03-28
项目初衷
在 Windows 平台上,一直缺乏一个像 macOS Photos 那样既优雅又高效的照片管理工具。现有的工具要么需要繁琐的“导入”过程,要么采用封闭的数据库存储。
iPhoto 的核心哲学是:文件夹即相册 (Folder-native) 。它不破坏原有的文件结构,通过轻量化的 JSON 描述文件和全局 SQLite 索引,在 Windows 上复刻了 Live Photo 播放、地图视图和非破坏性后期编辑等核心体验。主界面
编辑界面
项目采用严格的分层架构设计,确保了核心逻辑与 UI 层的解耦。
后端不依赖任何 GUI 库,保证了 CLI 工具和 GUI 界面可以复用同一套逻辑:
pydantic 风格的 JSON Schema 定义相册元数据(.iphoto.album.json)。ExifTool 读取复杂的 EXIF/GPS/QuickTime 元数据,利用 FFmpeg 生成视频缩略图。基于 MVC (Model-View-Controller) 模式构建复杂的桌面应用:
异步任务调度: BackgroundTaskManager 封装 QThreadPool,处理缩略图预读、文件导入等耗时操作,确保界面不卡顿。
服务层 (Services) : 通过 AssetMoveService 和 LibraryUpdateService 处理跨组件的复杂状态变更。
自定义组件:
这是本项目技术难度最高的部分,实现了类似 Lightroom 的后期体验:
实时预览: 基于 OpenGL 3.3 定制 Shader,将复杂的颜色调整、透视变换放在 GPU 上实时渲染。
参数映射算法:
存储机制: 所有编辑记录在 .ipo 旁路文件中,不修改原始图像像素。
| 特性 | 技术实现 |
|---|---|
| Live Photo 匹配 | 通过 Apple ContentIdentifier 或时间戳邻近算法自动关联图片与视频 |
| 足迹地图 | 提取 GPS 坐标进行聚类显示,支持多种地图样式 |
| 智能相册 | 基于 SQLite 查询动态生成(最近删除、全景照片、Live Photo 等) |
| 沉浸式预览 | 胶片条导航、悬浮元数据面板、视频流式播放 |
| 专业修图 | 包含光效调整、色彩校正、艺术黑白预设及高精度裁剪校正 |
在处理裁剪与透视时,系统维护了三套坐标系:
算法核心: 所有的裁剪逻辑(AABB 裁剪框)均在投影空间完成。通过 point_in_convex_polygon 验证,确保裁剪框 始终在 内部,从数学上根除了透视后的黑边问题。
裁剪界面
如果你是开发者,可以通过以下方式快速运行:
Bash
# 1. 克隆并安装依赖
git clone
cd iPhotos-LocalPhotoAlbumManager
pip install -e .
# 2. 启动 GUI 界面
iphoto-gui
这个项目是我对“如何优雅地组织个人数据”的一次深入探索。代码结构清晰,注释丰富,非常适合作为 PySide6 大型项目实战或图像处理算法的学习参考。
欢迎大家提出 Issue 或 PR,一起完善 Windows 上的照片管理体验!
如果你觉得有用,欢迎在 GitHub 上点个 Star