#image-viewer #image #user #egui #directory #time #shortcuts

bin+lib avis-imgv

基于 egui 的图像查看器。通过预先加载图像,利用现代 RAM 的高效性,实现非常快的响应速度。具有最小化界面和大量使用快捷键的特点。

1 个不稳定版本

0.1.0 2024 年 1 月 19 日

#1214文件系统

GPL-3.0 许可证

155KB
3.5K SLoC

Build


avis-imgv

avis-imgv 是一个快速、可配置且支持色彩管理的图像查看器,使用 Rust 和 egui 构建。我的目标是使其快速并能够通过用户配置适应任何硬件性能。

目前它仅在 Linux 上进行了测试,但我看不到为什么它不能在 Windows/macOS 上工作。配置和缓存目录通过平台无关的 directories crate 获取。

变更日志

依赖项

  • coreutils(用于安装)
  • sqlite
  • exiftool
  • libwebp 用于 WebP
  • libdav1d 用于 AVIF(如果你在 cargo.toml 中启用它)

构建

安装 rust 后,只需运行

cargobuild --release

安装

查看 install.sh 脚本。在大多数系统上都能工作,但可能需要调整。它仍然处于原始状态,并且大多数系统尚未测试。目前仅适用于 Linux。

色彩管理

色彩管理是通过 qcms 实现的。

目前 avis-imgv 随附三个(sRGB、Adobe RGB 和 Display P3)配置文件。根据 exiftool 标签 "Profile Description" 选择配置文件。这是相当宽松的,因为我们还可以匹配更具体的配置文件,如 RT_sRGB 与 srgb。对此行为有建议。如果没有匹配到配置文件,将尝试提取,尽管这对最大性能来说并不理想。因此建议提交包含附加配置文件的 PR。

默认输出配置文件为 sRGB,并且仅支持内置配置文件。如果您需要额外的配置文件,可以提交 PR 或编辑 icc.rs 以添加您本地构建所需的配置文件。它可以在 config.yaml 中进行配置。

本页的sRGB和Adobe RGB(ClayRGB)来自elles_icc_profiles

支持的图像格式。

支持的图像格式可以在以下位置找到:这里这里

默认情况下使用imagecrate的默认功能标志。

计划中的功能

  • 允许按名称或日期排序
  • 主题配置

用户操作和上下文菜单

avis-imgv支持添加用户操作,包括通过快捷键或右键单击图像时的上下文菜单。用户操作是简单的命令,将生成并接受参数。

目前支持三个参数

  • {} 完整路径
  • {.} 无扩展名的路径
  • {//} 父路径(不带最后一个斜杠)

建议使用简单的命令。如果您需要更复杂的行为,可以使用脚本并将路径作为参数传递。

示例

  • 'gimp {}' - 在GIMP中打开文件。
  • 'darktable {.}.RAF' - 在darktable中打开相邻的富士胶片raw文件。这个示例最好与检查文件是否存在的脚本一起使用。
  • 'rate.sh {.}.RAF 5' - 运行脚本,写入包含图像评分的基本xmp。在示例文件夹中提供。

回调

执行用户操作成功后,我们可以通过指定回调来自动运行一个函数。为此,只需在上下文菜单或用户操作下添加条目即可。示例配置中提供了一个示例。

  • Pop - 从集合中移除所选图像
  • Reload - 重新加载所选图像
  • ReloadAll - 重新加载整个集合

配置

配置文件应为:~/.config/avis-imgv/config.yaml。示例在examples/config.yaml中提供。

通用

默认
limit_cached 缓存文件元数据的最大数量 100000
output_icc_profile 输出icc配置文件 srgb
text_scaling 文本缩放 1.25
默认
loaded_images 每个方向中加载的图像数量。根据您想使用的RAM量进行调整。 5
should_wait 在前进到下一个图像之前是否应等待图像加载完成 true
metadata_tags 在图像信息侧面板(当打开时)中可见的元数据 日期/时间原始,创建日期,相机型号名称,镜头型号,焦距,光圈值,曝光时间,ISO,图像大小,色彩空间,目录
frame_size_relative_to_image 相对于最小图像边的白色边框大小 0.2
scroll_navigation 是否应使用滚动进行导航 true
name_format 底部栏中文件名的格式。使用 $(#exif_tag#) 表达式。如果未找到 EXIF 标签,则整个表达式将被忽略。例如:$(#File Name#)$( • ƒ#Aperture#)$(#Shutter Speed#)$(#ISO# ISO) -> DSCF6114.JPG • ƒ5.61/500200 ISO
默认
images_per_row 每行应显示多少张图片 3
preloaded_rows 每个方向上应加载和保留在内存中的屏幕外行数 2
simultaneous_load 应允许同时加载多少张图片 8(根据核心数或您想对PC进行的工作量进行调整)
margin_size 图片之间的边距大小 10.

默认快捷键

可以在设置中配置快捷键。检查 examples/config.yaml 以获取示例,并检查 keys.txt 以获取有效的键和修饰符。

通用

动作
退格键 在单图库和多图库之间切换
Q 退出
F1 切换一个菜单,允许打开文件夹或文件
Ctrl + L 显示导航栏
T 显示目录树
Ctrl + F 扁平(从所有子目录读取文件)
Ctrl + W 监视目录以查找文件更改(创建、更新)
动作
F 使图片适合屏幕
G 切换围绕图像的白色边框
I 显示包含图像元数据的侧边栏
空格键 切换缩放
Ctrl+滚动 缩放图片
滚动 下一张或上一张
箭头键 下一张或上一张
Alt + 1 将放大倍数设置为 100%
H 水平适合
V 垂直适合
动作
空格键 向下滚动
双击 在所选图片上打开单图库
Ctrl+滚动 增加/减少每行的图片数量
+ 增加每行的图片数量
- 减少每行的图片数量

依赖项

~26–64MB
~1M SLoC