HImage

HImage 应用图标

应用图标源文件为 assets/icon.svg,PNG 用于窗口图标,多尺寸 ICO 用于 Windows EXE 和安装器。修改 SVG 后,在 PowerShell 中执行以下命令重新生成:

$env:HIMAGE_GENERATE_ICON = '1'
cargo run --example generate_icon
Remove-Item Env:HIMAGE_GENERATE_ICON

随后正常构建即可将图标嵌入程序。build.rs 仅在 Windows 构建时编译图标资源。

HImage 是一款使用 Rust、egui/eframe 和 wgpu 构建的桌面图片浏览器。当前首版面向 Windows 10/11 x64。核心目录、解码和视图逻辑不依赖 Windows API。

功能

  • 打开单张图片或文件夹,也可以将图片或文件夹拖入窗口。
  • 仅浏览当前目录,按文件名自然排序,并支持首尾循环切换;按 F5 重新扫描目录。
  • 支持 JPEG(含 EXIF 方向)、PNG、BMP、WebP、TIFF、ICO、GIF 和 SVG。
  • GIF 按帧延时和循环设置播放。TIFF、APNG 和动画 WebP 当前仅显示首幅。
  • SVG 按静态图像渲染;缩放时在后台重新栅格化,不执行脚本,也不获取网络资源。
  • 解码在后台运行,并隔离已取消的请求;GIF 帧队列容量为 1。
  • 解码器分配预算为 128 MiB,最多同时执行一个解码任务。预留合成、帧队列和显示缓冲空间后,目标峰值预算为 512 MiB(不含图形驱动和字体)。位图单边最大 16384 像素,SVG 源文件最大 16 MiB。上传纹理尺寸受设备上限与 8192 像素限制,超出时会缩小显示;超出其他限制时会显示错误。

使用方法

直接打开图片、打开文件夹、拖入图片或文件夹,或从命令行传入路径:

HImage.exe "图片路径或文件夹路径"
操作 功能
鼠标滚轮 以鼠标位置为锚点缩放
左键拖动 平移图片
左右方向键 切换上一张/下一张
窗口两侧半透明三角按钮 切换上一张/下一张
+ / - 放大 / 缩小
0 适应窗口
1 显示原始尺寸
Ctrl+O 打开图片
Ctrl+Shift+O 打开文件夹
F5 重新扫描当前目录

构建

需要安装 Rust(项目固定使用 rust-toolchain.toml 中的工具链)以及 Visual Studio 2022 Build Tools 的“使用 C++ 的桌面开发”组件和 Windows SDK。

cargo fmt --check
cargo clippy --all-targets -- -D warnings
cargo test
cargo build --release --locked

开发运行示例:

cargo run -- "图片或目录路径"

本项目优先使用全局 Rust,不需要 .tools 下的 Rust 工具链。

打包

使用 Inno Setup 6.6 或更新版本编译安装程序:

./scripts/package.ps1 -Iscc "C:/Program Files (x86)/Inno Setup 6/ISCC.exe"

打包输出为 dist/HImage.exe 和 dist/HImage-Setup.exe。全用户安装需要管理员权限,程序日常运行不需要。安装器会创建开始菜单和卸载入口,并可选注册“打开方式”;不会更改默认图片应用。程序当前未签名。

项目结构

  • src/browser.rs:目录浏览和文件排序
  • src/decode.rs:图片解码和动画帧队列
  • src/view.rs:缩放和视图状态
  • src/main.rs:应用界面与入口
  • platform/windows:Windows 安装配置

Linux/macOS 仅预留源码结构,尚未完成实机验证或打包。未来 Linux 构建还需要启用 eframe 的 X11/Wayland 后端和文件对话框依赖。

许可

项目内置 Noto Sans SC 字体,许可证见 assets/fonts/OFL.txt。依赖版本由 Cargo.lock 锁定;发布包附带第三方许可证目录。

验证记录

截至 2026-11-02,在 Windows x64、全局 stable Rust 1.99.1 / Cargo 1.99.1 和 Visual Studio 2022 Build Tools 环境中:

  • 11 项单元测试通过,覆盖自然排序、空目录、循环、缩放锚点、中文字体渲染、静态解码、EXIF 旋转、GIF 循环/延时/帧处置、SVG 和分配限制。
  • 格式检查、Clippy(警告视为错误)和 Release 构建通过。
  • 实际窗口检查覆盖中文界面、文件对话框、中文及空格路径、SVG 显示和自然排序切图。
  • 安装器已在隔离目录完成全用户安装、覆盖升级和卸载测试,均返回 0;卸载后程序和测试用“打开方式”注册项均已清理。
  • 尚未在其他 DPI、Windows 10、Linux 或 macOS 实机验证。拖放和快速连续切图已实现,尚未完成 UI 自动化验证。

仓库

https://git.honulla.com/hokori/HImage

S
Description
图片浏览器
Readme
7.1 MiB
release
Latest
2026-11-02 19:18:39 +08:00
Languages
Rust 92.1%
Inno Setup 5.2%
PowerShell 2.7%