Vii3 全格式,高自定义的无边框图片浏览器

Vii3

基于 Avalonia 的高性能图片浏览器,极致流畅的切换体验,全面的格式支持,高度自定义。

项目简介

古法编程闭门造车之作

为了解决大图切换时的阻塞而产生

特性

  • Avalonia AOT 编译带来极致的启动速度

  • 高度优化的加载流程,确保切换无阻塞

  • 高度优化的缩略图支持

  • 由 SkiaSharp 及 Magick.Net 驱动,全图片格式支持

  • 动态 Gif,Webp,Apng,Jxl,Avif

  • 由 Libmpv 驱动 实现安卓动态照片支持

    • 需自行下载 libmpv-2.dll 放置程序所在目录
    • 大部分人没这需求,且 libmpv 比较大 ,需要的自行下载
  • 由 SharpCompress 驱动带来 Zip,Rar 压缩包格式支持

  • 由 NLua 驱动带来 高级需求 lua 支持

  • 界面元素可全部移除以去除对浏览的干扰

  • 快捷键,右键菜单可完全自定义

展示

快速切换展示

下载

下载

其他

为什么是3,因为有前作

  • 强烈建议设置解码宽度为屏幕宽度1.5-2倍左右
    • 大幅提升大图读取速度,减少摩尔纹
    • 仅支持 SkiaSharp 格式 .bmp, .jpg, .jpeg, .png, .webp, .gif, .ico, .wbmp
2 个赞

特殊

  • 加载流程
    • 图片的定义是后缀名是图片后缀名
    • 打开单张图片会打开同目录下所有文件
      • 会启动文件变更监听以响应外部修改
      • 即外部程序删除,修改文件会响应并更新
    • 打开文件夹本身会搜索包括子文件夹下所有图片
      • 不会扫描压缩包
    • 打开压缩包会搜索压缩包内所有图片文件
    • 可以同时打开多个图片,文件夹,压缩包
      • 文件夹会搜索子文件夹
    • 除直接打开单张图片,其他情况不会响应外部修改
    • 可通过拖拽,粘贴,运行参数加载
      • 运行参数加载(可传递多个或单个)
        • Vii3.exe img1 img2 dir1 dir2 zip1 rar2
  • 文件关联图标
    • 未提供的原因是我无力制作较美观的图标
    • data目录下新建子文件夹icons
    • 获取或制作 ico 格式的图标
    • 后缀名.ico 格式命名
      • bmp.ico jpg.ico
  • 临时目录位置 %temp%\vvyoko\Vii3
    • 暂时只存放日志
    • 压缩包,动态照片中视频已完全迁至内存流
  • 快捷键
    • 层级 - 除全局外其余是同级,优先执行非全局
    • 右键菜单部分不显示快捷键是因为它只能放它认为的快捷键
    • Lua 中定义的快捷键会覆盖设置中的快捷键
    • 设置中的快捷键显示太乱属于美工无力
  • 命令行参数
    • -- 开始的是待执行命令
      • 格式 --命令名[=可选参数]
      • 参数包含空格用"参数"裹住
      • 不保证执行顺序
      • 不保证在初始阶段可执行
      • 可视为它是专门为特殊操作服务的
      • 如粘贴剪贴板命令,运行并执行指定命令,以打开剪贴板中图片
        • Vii3.exe --OpenClipboardFilesOrImage --SendMessageToScript="CleanMode On"
        • AutoHotkey 示例脚本
            OnClipboardChange(ClipChanged)
            Vii3Path := "路径"
            ClipChanged(clipType)
            {
                if (clipType == 2 && ;图片
                    !WinActive("ahk_exe Vii3.exe"))
                {
                    ; if (WinActive("ahk_exe chrome.exe"))
                    Run(Vii3Path ' --OpenClipboardFilesOrImage --SendMessageToScript="CleanMode On"')
                }
            }
          
    • 遇到第一个以非 -- 开始直到结束,都视为文件或文件夹并加载

设置

  • 请悬浮查看注释,如仍不知用途可反馈

定义

  • 在本论坛渲染有问题请访问 定义

Lua文档

  • 有本论坛渲染有问题,请访问 Lua Api

更新日志

2026-05-15 初始发布

  • 超大图加载问题

    • 框架限制每张图片只能占 2G 内存
    • SkiaSharp 支持下采样解码
      • 尽量加载可支持的最大分辨率
      • 支持格式:.bmp, .jpg, .jpeg, .png, .webp, .gif, .ico, .wbmp
    • Magick.Net 不支持
      • 如需加载得先加载原图再缩放
      • 整个流程耗时非常长,所以放弃
  • 动图, 动态图片相关

    • 迷你地图显示的是第一帧,仅用于移动位置
    • 动态照片在部分情况会被锁到 30 帧
      • 绝大部分动态照片中的视频本身没有 60 帧。
      • 猜测是框架合成器问题或解码压力
      • 可隐藏界面元素,缩小图片以查看是否有改善
    • 部分动态照片不遵守规则乱写或不写XMP,直接忽略读取
    • 不支持裁剪, 保存等操作
      • 但未屏蔽,调用它会针对图片第一帧进行操作
    • Avif 疑似透明度支持有问题
    • Avif 未显示正确的帧数
      • 它实际是视频格式,获取数据非常慢
      • 所以暂时先自行实现数据读取
      • 待上游解决或可能无法解决
  • Exif部分值乱码, 主要原因是EXIF没有编码

  • ICO是一个容器格式, 图片信息中判定的是Png是正确行为

  • 缩略图界面偶然(频繁?)会出现位置错乱的情况

    • 怀疑是虚拟控件本身的问题, 难以解决
  • Avalonia 版本锁死在 11

    • 12版本移除了程序依赖的核心属性 ExtendClientAreaChromeHints
    • 通过各种尝试但仍无力解决
  • 图片失败信息出现在缩略图界面

    • 极端情况,请切换下一张图片

有下载链接吗大佬

在1楼更新了

后面的详细介绍我得慢慢补充了
我自己都还没写这个比较麻烦
不过由于是纯界面的配置,除了少部分几个其他的应该一看就知道是干什么的(当然也比较乱)

脚本会更加麻烦点
在data\scripts目录下我提供了一些未启用的
CleanMode.lua和CropFunc.lua去除sample后缀可以启用
看里的add_key_binding绑定的快捷键可简单测试
有一个默认的Slideshow是F2启动幻灯片

另外我重新打包了,我忘了是公开发布了..
而我的图标是偷的Honeyview
libmpv的来源也不可信

如果需要关联图标支持请自行获取(和我一样去偷,或者自己在其他地方获取
放至 data/icons
bmp.ico jpg.ico 这样的格式命名

如果需要安卓动态照片支持
请自行下载 libmpv-2.dll 放至 Vii3.exe 所在目录
不需要这个支持可以不管,它的确比较大

很不幸,挂了

:joy:

但这种无边框+圆角+渲染快+窗口自适应图片的图片浏览器真的是我的心头好啊

反馈来了:

  1. 不能拖放打开图片,直接打开Vii3.exe,右键菜单中没有打开图片选项;
  2. 横向图切换竖向图的时候有很明显的过渡闪一下;
  3. 切gif的时候,有概率前一张图片还显示在当前图片的上层;
  4. (大图情况下,如20M以上)点按切换还流畅,但是长按切换就会卡住

1,有任何提示吗? 拖拽应该是支持的
即使不支持也会提示 不支持此类型文件不包含图片
或者可以先用复制粘贴试试,它也是全功能的
复制文件(支持多个文件,和拖拽是同一逻辑)
路径,图片,base64(带data:image前缀)都可以反向粘贴的,
另外可以粘贴<svg...</svg>这种svg
即在资源管理器中ctrl+c,在程序中ctrl+v
右键菜单没有是因为我从没在其他软件用过右键打开…
但右键菜单是支持自定义的,可以添加
虽然我没用,但是快捷键还是通用的 ctrl+o

2,这是不可避免的,界面大小大幅变化怎么可能不闪烁呢

3,这应该是不可能的,在加载新图前我会切断旧的,可以录个gif或者视频看看闪烁是什么

4,卡住是正常的
我展示中的第二张图就是这样的效果,标题信息在动, 图片卡住了(没加载)
你可以测测其他同类软件, 有一种选择是每一张必需得加载完才能切下一张
这就是我说的阻塞来源,比方说imageGlass
还有一种就是异步加载, 但大部分实现效果的确不是很好
有些需要添加切换延迟, 比方说PicView, 但它仍然在很大几率直接卡死
我选择的是这一种, 它保证你停下的一瞬间会加载停下那一张图
卡住就是避免中间的多余加载(长时间按住中间有几张会加载)
你可以试试其他同类软件, 就知道我说的是什么意思

然后那个加载失败的图片…
我都知道来自jarkViewer的帖子里是吧
已知问题那第一个我就说了这个
事实上不止这个会加载失败, 另一张大的jpeg它加载的不是全分辨率
根本原因是受限于框架, 一张内存只能占两G
我又没那个能力像jarkViewer那样修改底层
只能在这上面折腾
imageGlassPicView它是直接全部拒绝
我是尝试尽力加载能加载的最高分辨率

为什么jpg不加载失败, tiff加载失败
原本是这个 由 SkiaSharpMagick.Net 驱动,全图片格式支持
SkiaSharp它支持按需读取, 及我可以在较大的图片中直接读取较小的尺寸
但它只支持最基本的几个格式jpg, png, bmp, webp
它也是配置中解码宽度的支持来源,
它可能大幅的加快加载速度,比方说设置1920*1.5(支持简单的无括号的四则运算)
按需在需要大图时在右键中选择加载原图

而其他的是由Magick加载, 它没有这种功能
如果想要加载, 它得先加载原图(能加载不能显示), 再缩放, 这耗时超乎你的想象, 所以直接去除了

这还有更新啊,啥时候写完 @ 我一下,我帮你移动到 发现频道

剩下的属于高级设置, 对正常使用来说基本没什么影响
它现在是处于已发布状态了

剩下的占位属于高级设置
普通用户并不需要它们,没有它们也是一个完备的软件了
可以理解为是 mpv文档 那种东西
当然要简单非常非常多
写这种东西是件比较麻烦的事
绝大部分人都不是很喜欢写文档,我也是一样…

  1. 拖曳确实不能打开,不知道是不是设置原因,但我用的是默认设置;用Ctrl+O可以打开,反正我现在关联了,也无所谓了;
  2. gif切换残留没有复现,先不管了

比起这个妹子图哪来的,能分享不 :heart_eyes:

拖拽不应该,如果拖拽不行的话压缩包,文件夹,等功能基本上处于失效状态
因为我并没有加右键菜单
我自己用的是第三方文件管理器自行用特殊里的运行参数手动关联文件夹和压缩包的
希望有更多反馈,我自己测我了两台电脑,都是可行的,不过两台的环境差不多

哪一张 0 0
看我在一直折腾图片浏览器就知道我是这方面的重度用户了…