Skip to content

YeImageViewer v1.36.28

Choose a tag to compare

@yakoye yakoye released this 30 Aug 10:18
· 3 commits to main since this release

本版以解码安全加固为主,并改进了图片加载的等待与切换体验。

稳定性

  • 加固 ICO 图标解码的边界检查。此前解析 DIB 时只信任文件内记录的头部长度,头部、位域掩码、调色板、像素行和 AND 掩码都没有对照条目实际长度校验,损坏或被构造的 ICO 文件可能读到数据之外并导致崩溃。同时限制调色板数量、位深和图像尺寸的取值范围,避免异常文件触发超大内存分配。
  • 修复 RAW 解码在部分机型上的越界读。此前直接把解码结果按 8 位三通道位图解释,单色机型或 16 位输出的实际数据小于预期尺寸,现在会先确认数据布局再构造图像。
  • 修复放大绘制三通道图像时多读 1 字节的问题,取值结果与之前一致。
  • 删除图片后同步清除该文件的缓存,避免之后出现的同名文件显示到已经过期的内容。

体验与性能

  • 改进图片加载的等待方式。此前主线程按固定间隔轮询解码结果,受系统计时器精度限制,即使解码已经完成也要等到下一轮才显示;现在改为解码完成后立即唤醒。
  • 快速翻页时优先解码当前要显示的图片。此前预读队列按先进先出处理,连续翻页会让正在等待的图片排到队尾,等待过久时会显示加载失败。
  • 画面呈现改用两张暂存纹理轮换,避免每帧等待 GPU 读取完成;未旋转未翻转时使用特化的绘制路径,减少逐像素的坐标换算开销。

下载

推荐下载 setup.exe;完整 .7z 包保留便携解压方式。两种包均包含全部现有格式支持且小于 25 MiB。