Vii 以内存换取速度的简略图片浏览器

继前文 无了个大语, 大家对 .net 的软件大小怎么看待

说明

  • 简要说明

    • 以内存换取速度的简略图片浏览器
  • 进一步说明

    • 一般来说没必要使用
    • 当你经常浏览大图切换时有滞后感时可尝试
  • 特别说明

    • WPF 图片多了一层转换的过程
    • 缺点是更慢了(直接副作用是加载第一张大图时特别慢)
    • 优点是它支持硬件加速以及真正的透明

下载

  • 目前仅打包了x64版本
  • 分为四个版本
  • 单文件依赖框架 多文件依赖框架 单文件不依赖框架 多文件不依赖框架
  • 依赖框架需要运行时 下载运行时
  • 百度云

支持格式

  • 默认支持格式
    • bmp, gif, jpeg, jpg, png, ico, tiff, tif, webp
  • 安装WIC扩展以获取更多格式支持
    - heic, heif, jpegxl, Raw…(其实就这些了)

选项

  • 单实例 (默认启用)

    • 受限于能力,冷启动速度可能不如人意
    • 当启用时可选关闭至后台(隐藏),再次打开图片速度略有加快
    • 副作用
      • 占用成功清理时会占用100-300MB内存
      • 未成功清理时会占用更多
      • "好消息"是重复关闭,打开这一过程内存会释放,不会持续增加
  • 循环文件夹 (默认禁用)

    • 最后一张图片下一张是第一张
    • 第一张上一张是最后一张
  • 调试模式 (默认禁用)

    • 启用使用过程中会被无数报错消息影响
    • 禁用无事发生
  • 图片加载宽度 (默认分辨率宽度*1.5)

    • 由于要大量缓存图片, 所以不会加载原大小以节省内存
    • 以宽度为限制,最大加载宽度为设定值
    • 如果只想看原图可选择其他图片浏览器
      • 加载原图可能10来张就会撑爆内存
  • 预读数量 (默认60)

    • 实际加载总数会 - 10(超过会被清理)
  • 内存最高用量 (默认 3072 MB)

    • 当占用超过此值或缓存总数超过上面值时会触发清理
  • WIC格式

    • 新增时需带..webp .heic
    • 见支持格式说明
  • Exif大项排除

  • Exif小项排除

    • 类型 - 标签 - 详细信息
    • 开启exif显示后切换图片可能会慢一点
    • 过滤用来缓解这种副作用,以及过滤一些不关注的
    • 用来过滤某些不想看见的exif信息
    • 大项指类型,小项指标签
    • 默认已经过滤了一些
    • 怀疑这些会大幅降低显示速度(可能是包含的数据太多的原因)
  • 其他自动保存的选项

    • 窗口状态
      • 最大化,全屏,窗口位置
    • 文件排序方式
    • 填充模式
    • 裁剪比例

快捷键

  • 修饰键 ModifierKeys 枚举

    • CTRL Shift Alt
    • Win 键有点麻烦,所以不支持
  • 按键 Key 枚举

  • 快捷键由 0-3 个修饰键与 1 个按键组成,以+号连接,不得包含空格

  • 虽然特殊对待了一些按键名称,但它可能与你认为的不同,最好以上文链接为准

  • 上文链接中按键名称大小写不敏感,特殊对待列表大小写敏感

  • 特殊对待列表

    • Esc Caps Del
    • 方向键 ← → ↑ ↓
    • 主键区数字为 0 - 9
    • 小键盘数字为 N0 - N9
    • 小键盘除了+其他符号英文半角直接输入 / * - .
    • 其他的参考标准 104按键布局 链接
      • 某些符号与小键盘相同则在前加大写 O举例 O- O. O/

命令

Close,  //退出程序
CloseToBackground, //裁剪状态下退出裁剪,单实例时关闭至后台,退出程序
CopyExif,   //复制Exif
CopyImage,  //复制图片(GIF尝试复制为文本以支持在QQ微信粘贴)
CopyPath,   //复制路径
CycleCrop,  //切换裁剪状态
CycleExif,  //切换Exif显示
CycleTitle, //切换左上文件名等信息显示
CycleTop,   //切换置顶状态
CyclyFullScreen,    //切换全屏
FirstFile,  //跳转至第一张图片
FitAuto,    //在填充模式  居中-自动 之间切换
FitCenter,  //设置填充模式为居中
FitWidth,   //在填充模式  居中-适合宽度 之间切换
LastFile,   //跳转至最后一张图片
NextFile,   //跳转至下一张图片
OpenSet,    //打开设置
PrevFile,   //跳转至上一张图片
ProcessStart,   //启动第三方程序 %file% 为当前图片路径, %dir%为data文件夹位置(不包含最后\)
RecycleFile,    //删除文件至回收站
SaveCrop,   //在裁剪状态下保存选中图片
SendTips,   //显示文字消息,第一项为消息,第二项为持续时间 测试 10
SetWallPaper,   //设为壁纸
ShowClipboardImage, //显示剪贴板中的图片
ShowInFolder,   //在资源管理器中显示图片
ZoomIn, //放大图片 (不完美)
ZoomOut,    //缩小图片 (不完美)
ProcessStart  SendTips 参数以空格分隔,如参数本身包含空格用""包括

鼠标

  • 滚轮
    • 在Exif上时滚动Exif
    • 切换图片
  • 双击切换全屏
  • 拖拽
    • 裁剪状态选择裁剪范围
    • 全屏或最大化在图片顶端往下拖拽和系统标准行为一样(退出最大化,并可移动界面)
    • 在缩略图上拖拽缩略图
    • 图片可平移状态平移图片
    • 图片不可平移移动窗口位置
  • 悬浮
    • 左上 显示加载信息
    • 右上 关闭,最大化,最小化,全屏 图标
    • 右下 如图片可平移状态则显示缩略图
    • 在显示缩略图状态悬浮移动可平移图片
  • 图片可平移状态指图片宽或高有一个超出窗口范围

已知问题

  • 放大缩小
  • 右键菜单分隔符
  • 设置界面太拉
  • Exif 太乱
    • 尝试在最顶端显示了常用信息,其他的按需过滤
  • 加载首张大图过慢 (暂时无解)
  • 关闭至后台时可能清理占用不成功 (暂时无解)
  • 目录太乱 (暂时无解)
  • 打包太大

WIC

目录结构

  • data 储存数据
    • settings.xml 用户设置
      • 遇到奇怪问题时可尝试删除
    • input.conf 快捷键设置文件
  • icons
    • 关联时指定关联的图标
    • 暂时从Honeyview偷的
  • libs
    • 本来用来存放外部dll的
    • 但net6不支持指定dll目录
    • 导致了目录很乱…
  • sample
    • 用来测试图片支持
    • 大部分图片来自 filesamples
    • 可删除

最后说明

  • 由于目前存在各种问题,如关联图标是偷的,exe图标也是偷的,一些库的许可也没折腾清楚
  • 所以目前不是正式版本
  • 所以目前版本会在2023年后启动时弹出一个提示,无其他行为
  • 可尝试将时间调至2023年后感受一下

展示图片

快速的切换图片会有些卡顿,目前只能拖拽图片进去才能打开,右键没有打开选项(CTRL+O),没有放大缩小按键,Exif显示的确太乱了。整体浏览效果还不错,看好!

快速切换还是最开始说的wpf图像格式问题
在没有缓存时它会比其他图片浏览器更慢(分辨率较小的图片影响不大)

直接打开的测试
测试大图 Honeyview
https://s1.328888.xyz/2022/09/04/1kwIm.gif

测试大图 Vii(更加明确的表明了第一张大图有多慢)
https://s1.328888.xyz/2022/09/04/1kGr7.gif

已缓存的测试
提示Honeyview也能缓存,但它缓存多少由软件自己控制,测了下应该不超过10张
不过它的占用非常优秀,缓存了占用也没提升,不知道是什么原理
正常情况下Honeyview已经能满足大部分需求
所以这也是我在开头说的一般没必要使用本软件的原因
https://s1.328888.xyz/2022/09/04/1ksH0.gif

Ctrl+O我自己从没用过…
放大缩小是小键盘的 + -
这是快捷键方面的功能,自己定义就行
其他上一张下一张放大缩小等按钮没有计划
本来就是打算只显示图片不显示其他的…
我也不想在界面上花更多心思了
xaml对我来说就是地狱

exif,已经在顶部显示了一些其他软件常显示的内容
其他的上面已经说了,按需过滤.
我当然可以把其他的信息全部过滤掉
但过滤不算麻烦
直接设置过滤大项添加类似JPEG这样在第一列显示的大项
说不定有人需要其他信息呢…
exif在我看来它是按需开启
而各人需求不同,
所以还是由别人选择过滤吧

换个网盘呗,蓝揍 123 onedrive这些都行