# rvw **Repository Path**: graviton/rvw ## Basic Information - **Project Name**: rvw - **Description**: Rust Viewer - **Primary Language**: Unknown - **License**: AGPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-08-01 - **Last Updated**: 2026-11-06 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # rvw 一个用 Rust 编写的快速、轻量图片浏览器,灵感来自 [voidImageViewer](https://github.com/voidtools/voidImageViewer)。 主要在 Windows 上使用,技术栈本身跨平台(Windows / macOS / Linux)。 ## 特性 - **秒开秒翻**:后台线程解码 + 前后各 3 张预取 + LRU 缓存(512MB),翻页零等待 - **GPU 渲染**:图片作为纹理上传一次,缩放/平移/旋转只改变换矩阵,每帧零解码 - **动图支持**:GIF / 动态 WebP 逐帧精确播放(GIF 子矩形帧自动合成) - **缩略图栏**:懒加载、独立缓存、点击跳转、自动跟随(`T`) - **EXIF 面板**:相机/镜头/光圈/快门/ISO/焦距/拍摄时间(`I`) - **幻灯片**:可调间隔 0.5s~30s,支持洗牌随机播放(每张每轮恰好播一次) - **实用操作**:复制到剪贴板(`Ctrl+C`)、删除到回收站(`Delete`,带确认) - **HiDPI**:PerMonitorV2 感知,多显示器自动适配;物理像素 1:1 模式(`P`) - **设置持久化**:`rvw.toml` 存于 exe 同目录 - 支持格式:PNG / JPEG / GIF / WebP / BMP / ICO / TIFF ## 构建与运行 ```sh cargo build --release ./target/release/rvw.exe [图片路径] # 也可直接拖入图片,或 Ctrl+O 打开 cargo test # 运行单元测试 ``` ## 快捷键 | 按键 | 功能 | |---|---| | `←` `→` `PgUp` `PgDn` `Space` `Backspace` | 上一张 / 下一张(循环) | | 滚轮 / `=` `-` | 缩放(滚轮以光标为中心) | | 双击 / `0` / `1` | fit ↔ 100% | | `P` | 物理像素 1:1 开关(HiDPI 像素级查看) | | 左键拖拽 | 平移 | | `R` / `↑` | 顺时针旋转 90° | | `↓` | 逆时针旋转 90° | | `Ctrl+C` | 复制图片到剪贴板 | | `Delete` | 删除到回收站(Enter 确认 / Esc 取消) | | `T` | 缩略图栏 | | `I` | EXIF 面板 | | `S` / `F5` | 幻灯片 开始/停止 | | `X` | 幻灯片随机播放 开/关 | | `[` `]` | 幻灯片间隔 -/+ | | `Ctrl+O` | 打开图片 | | `F11` | 全屏 | | `F1` / `H` | 帮助 | | `Esc` | 退出全屏 / 退出 | ## 技术架构 - **GUI**:eframe/egui(wgpu 后端),eframe 0.35 的 `logic`(非绘制)/ `ui`(纯绘制)分离结构 - **解码**:`image` crate;2 个后台 worker 线程,mpsc 通道,完成后经 `egui::Context::request_repaint` 唤醒 UI - **缓存**:主图 LRU 按解码字节数限额 512MB;缩略图独立 LRU 限额 128MB、只请求可视区域 - **中文渲染**:egui 内置字体无 CJK 字形,启动时加载系统字体(微软雅黑/等线)作为 fallback ``` src/ ├── main.rs 入口、CLI 参数 ├── app.rs App 状态、logic/ui、全部输入处理、覆盖层 ├── loader.rs 后台解码线程池 + LRU 缓存 + 预取 ├── thumbs.rs 缩略图后台解码 + 独立 LRU ├── imagelist.rs 目录扫描、自然排序、循环导航 ├── animation.rs 动图帧延时推进 ├── view.rs 缩放/平移/旋转变换 ├── slideshow.rs 幻灯片计时 + 洗牌播放顺序 ├── exif.rs EXIF 解析(kamadak-exif) ├── settings.rs rvw.toml 持久化(serde + toml) └── fonts.rs 系统 CJK 字体加载 ``` ## 路线图 - 多语言界面 - 更多格式(AVIF、HEIC、RAW) - 缩略图栏排序/过滤