Skip to content

gy212/PhotoWall

Repository files navigation

PhotoWall 照片管理软件

版本:v0.1.0

⚠️ 项目状态:本项目仍在积极开发中,部分功能可能不完善。

PhotoWall 是一款基于 Tauri + React + TypeScript + Vite 的 Windows 桌面照片管理软件,专注于本地照片的浏览、索引与整理体验。


目录


系统要求

  • 操作系统:Windows 10 或更高版本
  • 运行环境:需要安装 WebView2 运行时(Windows 11 已内置)
  • 硬盘空间:至少 100 MB 可用空间(用于程序和缩略图缓存)
  • 内存:建议 4 GB 以上

安装说明

从源码构建

环境要求(Windows)

  • Node.js 18+(仓库使用 package-lock.json,推荐使用 npm)
  • Rust stable(建议使用 MSVC 工具链)
  • WebView2 Runtime(Windows 11 已内置)

构建步骤

# 克隆仓库
git clone https://github.com/gy212/PhotoWall.git
cd PhotoWall

# 安装依赖
npm install

# 开发模式运行(桌面端:自动启动 Vite + Tauri)
npm run tauri dev

# 构建生产版本(桌面端)
npm run tauri build

构建完成后,安装包位于 src-tauri/target/release/bundle/


开发与构建

常用命令

命令 说明
npm run dev 启动 Web UI(Vite)
npm run build TypeScript 类型检查 + 构建 Web UI 到 dist/
npm run tauri dev 启动桌面端开发(Tauri)
npm run tauri build 构建桌面端安装包/可执行文件
npm run test 运行 Vitest
npm run test:coverage 运行测试并生成覆盖率(输出到 coverage/
npm run lint ESLint 检查
npm run lint:fix ESLint 自动修复
npm run format Prettier 格式化 src/

类型与数据结构同步

  • 前端类型:src/types/
  • 后端(Rust)数据结构:src-tauri/src/**

当 Rust 命令/结构体对前端暴露 payload 时,建议同步更新对应的 TypeScript 类型,避免运行时字段不一致。


快速开始

第一次使用

  1. 启动程序:运行构建后的应用或使用 npm run tauri dev 开发模式

  2. 添加照片文件夹

    • 进入「设置」页面
    • 在「文件夹同步」中,点击「添加文件夹」
    • 选择您存放照片的文件夹
    • 程序会自动扫描并索引照片
  3. 开始浏览

    • 点击顶部导航栏的「照片」
    • 您的照片将以网格形式展示

主要功能

导入照片

PhotoWall 支持两种方式导入照片:

自动扫描

  • 在设置中添加监控文件夹后,程序会自动扫描并索引其中的照片
  • 支持增量更新,只处理新增或修改的文件
  • 文件夹内的变化会被实时监控

手动导入

  • 点击右下角的「快速导入」浮动按钮(+
  • 选择包含照片的文件夹
  • 等待导入完成

浏览照片

PhotoWall 提供三种浏览模式:

网格视图

  • 以缩略图网格形式展示所有照片
  • 使用工具栏中的滑块可调整缩略图大小
  • 支持流畅滚动,可快速浏览大量照片

时间轴视图

  • 按拍摄日期自动分组
  • 日期标题清晰显示
  • 方便按时间回顾照片

文件夹视图

  • 点击顶部导航栏的「文件夹」
  • 显示文件夹树形结构
  • 每个文件夹显示照片数量
  • 点击文件夹可查看其中的照片

全屏查看

双击任意照片可进入全屏查看模式:

基本操作

  • 使用左右箭头键或点击屏幕两侧切换照片
  • 鼠标滚轮或 +/- 键缩放照片
  • 拖拽照片可平移查看
  • 0 键重置缩放

幻灯片播放

  • 按空格键开始/暂停自动播放
  • 默认每 3 秒切换一张照片

信息面板

  • I 键显示/隐藏照片详细信息
  • 包括文件名、尺寸、拍摄参数等

标签管理

标签可以帮助您更好地分类和查找照片:

创建/添加标签

  1. 在「照片」页面选中一张或多张照片
  2. 在出现的操作工具栏中点击「标签」
  3. 在弹出的面板中搜索已有标签,或直接输入名称创建并添加

按标签/收藏筛选

  • 在「照片」页面的「快速筛选」中点击标签或「收藏」即可筛选

相册(开发中)

相册功能仍在完善中,部分交互/入口可能会在后续版本调整。


搜索照片

点击右上角搜索按钮或按 Ctrl + K 打开搜索面板,可快速查找照片:

搜索方式

  • 按文件名搜索
  • 按标签名称搜索
  • 支持模糊匹配

高级筛选 程序支持按以下条件筛选:

  • 日期范围
  • 相机型号
  • 镜头型号
  • 评分
  • 收藏状态

界面说明

顶部导航栏(Header)

  • 左侧:应用 Logo 与名称(桌面端可拖拽区域)
  • 中间:主导航(胶囊式)「照片 / 文件夹 / 废纸篓 / 设置」
  • 右侧:全局搜索(Ctrl + K)与窗口控制按钮(桌面端)

照片(主页)

  • 仪表盘 + 照片网格:最近添加、标签条、全部照片等
  • 选中照片后会出现操作工具栏:批量收藏、批量标签、删除等
  • 点击照片进入查看器:支持方向键切换、缩放等操作

文件夹

按文件夹结构浏览已索引照片,并查看每个文件夹的照片数量等信息。

废纸篓

展示已删除(软删除)的照片,可进行恢复或清空。

设置

  • 左侧分区:文件夹同步 / 外观 / 照片扫描 / 缩略图 / 性能
  • 支持「保存设置」与「恢复默认设置」
  • 文件夹同步中会提示不可访问/不存在的路径(如被移动或权限不足)

快捷键

通用快捷键

快捷键 功能
Ctrl + A 全选照片
Delete 删除选中的照片
Escape 取消选择/关闭对话框

全屏查看器快捷键

快捷键 功能
/ 上一张/下一张
+ / - 放大/缩小
0 重置缩放
空格 播放/暂停幻灯片
I 显示/隐藏照片信息
Escape 退出全屏查看

设置选项

进入设置页面可配置以下选项:

外观

  • 主题:浅色 / 深色 / 跟随系统

扫描设置

  • 监控文件夹:添加或移除自动扫描的文件夹
  • 排除文件夹:设置不需要扫描的文件夹

缓存设置

  • 缓存位置:缩略图缓存存储位置
  • 清理缓存:手动清理缩略图缓存以释放空间

性能设置

  • 并行线程数:调整扫描和缩略图生成的并发数

支持的格式

PhotoWall 支持以下常见图片格式:

常规格式

  • JPEG (.jpg, .jpeg)
  • PNG (.png)
  • GIF (.gif)
  • BMP (.bmp)
  • WebP (.webp)
  • TIFF (.tiff, .tif)

RAW 格式

  • Nikon (.nef) ✅ 已测试
  • Canon (.cr2, .cr3) ⚠️ 未充分测试
  • Sony (.arw) ⚠️ 未充分测试
  • Adobe DNG (.dng) ⚠️ 未充分测试
  • 其他 RAW 格式 ⚠️ 未充分测试

注意:目前 RAW 格式仅对 Nikon NEF 进行了完整测试。其他 RAW 格式可能出现缩略图无法加载、色彩信息丢失或偏绿等问题。如遇此类情况,建议将 RAW 文件转换为 DNG 或 JPEG 格式使用。


常见问题

Q: 照片缩略图加载很慢怎么办?

A: 首次打开大量照片时,程序需要生成缩略图,这可能需要一些时间。生成完成后,缩略图会被缓存,后续加载会非常快速。

Q: 如何恢复已删除的照片?

A: 删除的照片会移动到废纸篓。点击顶部导航栏的「废纸篓」,选中照片后点击「恢复」即可。

Q: 程序占用磁盘空间太大?

A: 程序会在本地缓存缩略图以提高加载速度。您可以在「设置」→「缓存设置」中清理缓存。

Q: 新添加的照片没有显示?

A: 请确保照片所在的文件夹已添加到监控列表中。您也可以点击「刷新」按钮手动触发扫描。

Q: 支持哪些相机的 RAW 格式?

A: 目前仅对 Nikon NEF 格式进行了完整测试。其他品牌(佳能、索尼、富士等)的 RAW 格式支持尚在完善中,可能出现缩略图加载失败或色彩异常的情况。如遇问题,建议将 RAW 文件转换为 DNG 或 JPEG 格式。

Q: RAW 格式缩略图显示异常(偏绿/无色彩)怎么办?

A: 这是已知问题,目前部分 RAW 格式的解码尚未完善。临时解决方案是使用 Adobe DNG Converter 或相机厂商软件将 RAW 文件转换为 DNG 或 JPEG 格式。


数据存储位置

程序数据存储在以下位置:

%AppData%\PhotoWall\
├── Database\          # 数据库文件
│   └── photowall.db
├── Thumbnails\        # 缩略图缓存
│   ├── small\
│   ├── medium\
│   └── large\
├── Config\            # 配置文件
│   └── settings.json
└── Logs\              # 日志文件

项目结构

  • src/:React + TypeScript 前端(@/src/ 别名)
  • src/test/:Vitest 测试与公共测试工具
  • public/:Vite 静态资源
  • src-tauri/:Tauri(Rust)后端与打包配置
  • docs/:设计/方案文档

贡献指南

  • 提交前建议执行:npm run testnpm run lint
  • 避免提交真实用户数据(如 *.db、缓存目录等),也不要在日志中打印敏感的本地路径
  • 如需调整 Tauri 文件访问范围,请先评估最小权限并在 PR 中明确说明(配置见 src-tauri/tauri.conf.json

技术支持

如遇到问题或有功能建议,欢迎通过以下方式联系:

  • 在 GitHub 仓库提交 Issue
  • 查看项目文档获取更多帮助

感谢您使用 PhotoWall!

About

一个用于图片管理的桌面端程序

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors