Skip to content

drop-source/image_preview

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

23 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

图片工具箱 / 缩略图预览器

这是一个 Windows 当前用户级图片工具。发布版是单 EXE 应用,提供图片预览、轻量编辑、批量转换、Explorer 缩略图注册、默认打开候选和右键图片转换菜单。

项目结构

.
├─ CMakeLists.txt                 # 版本号、目标、依赖和构建入口
├─ LICENSE
├─ README.md
├─ .vscode/
│  ├─ launch.json                 # VS Code Debug 启动配置
│  └─ tasks.json                  # CMake 配置、Debug、Release、打包任务
├─ scripts/
│  ├─ compile-imgui-shaders.ps1   # 预编译 ImGui DX11 shader
│  ├─ embed-provider.ps1          # 把缩略图 DLL 追加嵌入 EXE
│  ├─ package-release.ps1         # 生成 dist 发布包
│  ├─ refresh-explorer.ps1        # 刷新 Explorer 关联/缩略图缓存
│  ├─ register-user.ps1           # 注册当前用户缩略图 COM 组件
│  └─ unregister-user.ps1         # 取消注册当前用户组件和关联
├─ src/
│  ├─ core/                       # 文件类型、解码、编码、图像操作、注册表逻辑
│  ├─ config_gui/                 # Win32 + Direct3D 11 + ImGui 主程序
│  ├─ thumb_provider/             # Explorer IThumbnailProvider COM DLL
│  └─ version.h.in                # 构建时生成版本头
├─ third_party/
│  ├─ imgui/
│  └─ stb/
├─ build/                         # VS 2022/CMake 构建目录,忽略
├─ build-vs2026/                  # VS 2026/CMake 构建目录,忽略
├─ dist/                          # 发布输出,忽略
└─ local-obj/                     # 手工实验 obj 临时目录,忽略

ico.ico 是根目录本地图标副本,已加入忽略;正式程序图标在 src/config_gui/app.ico

构建要求

  • Windows 10/11 x64
  • CMake 3.24 或更新
  • Visual Studio 2026 或 Visual Studio 2022,安装 C++ 桌面开发工具
  • Windows SDK,需要能找到 fxc.exe

项目使用静态 MSVC 运行库,Release 发布时不依赖额外 VC Runtime。GUI 使用 Direct3D 11,硬件设备创建失败时会尝试 WARP。

版本号

版本号集中在根目录 CMakeLists.txt

project(TextureThumbPreview VERSION 1.0.0 LANGUAGES CXX RC)

Windows 文件版本第 4 位可通过 TEXTURE_THUMB_VERSION_BUILD 指定。构建会自动生成 version.h 和 manifest,图片工具箱.exeTextureThumbProvider.dll、缩略图组件释放目录和发布包名都会使用同一套版本号。

构建和发布

VS 2026 推荐命令:

cmake -S . -B build-vs2026 -G "Visual Studio 18 2026" -A x64
cmake --build build-vs2026 --config Release

指定 build 号:

cmake -S . -B build-vs2026 -G "Visual Studio 18 2026" -A x64 -DTEXTURE_THUMB_VERSION_BUILD=12
cmake --build build-vs2026 --config Release

VS 2022 可使用:

cmake -S . -B build -G "Visual Studio 17 2022" -A x64
cmake --build build --config Release

生成发布包:

powershell -NoProfile -ExecutionPolicy Bypass -File .\scripts\package-release.ps1

发布输出:

  • dist\图片工具箱.exe
  • dist\TextureThumbPreview-<version>-win-x64\
  • dist\TextureThumbPreview-<version>-win-x64.zip

图片工具箱.exe 会内嵌 TextureThumbProvider.dll。首次运行或配置缩略图时,程序会把 DLL 自动释放到当前用户目录后注册。

VS Code 里可直接使用任务:

  • 配置 CMake (VS 2026)
  • 构建 Debug
  • 启动 Debug
  • 构建 Release
  • 打包 Release

使用

配置关联

无参数启动进入 配置关联 页:

.\build-vs2026\bin\Release\图片工具箱.exe

可为每个扩展名单独勾选:

  • 缩略图:写入 Explorer 当前用户缩略图处理器关联。
  • 双击候选:把本程序注册为当前用户的“打开方式/默认应用候选”。
  • 图片转换目标格式:控制 Explorer 右键 图片转换 二级菜单里显示的目标格式。

系统默认应用 按钮会先写入当前勾选的双击候选,再打开 Windows 默认应用设置,并优先定位到本程序的默认值页面。

Windows 10/11 的 UserChoice 有哈希保护。如果某扩展名已有受保护默认应用,本程序不会写入或伪造 UserChoice;需要在系统默认应用设置中确认到 图片工具箱 后,双击文件才会直接打开本程序而不再弹选择框。

查看和轻量编辑

单个文件作为命令行参数启动时,自动进入首页预览:

.\build-vs2026\bin\Release\图片工具箱.exe .\test.png

也可以在程序里打开图片,或把图片拖进窗口。首页预览支持:

  • 适应窗口、重置视图、滚轮缩放、拖拽平移
  • 图片边界半透明细框
  • Alpha 通道 显示
  • 透明度 显示,默认开启并持久记忆
  • 底栏显示尺寸、文件大小和 Alpha 模式
  • 左/右旋转 90°、旋转 180°
  • 水平翻转、垂直翻转
  • 缩放、裁剪
  • 亮度/对比度调整
  • 灰度

编辑默认只修改内存中的当前图像副本。保存可选择 另存为 PNG/JPG/BMP/TIFF;覆盖原文件 需要用户明确点击,且仅对当前编码器支持的输出格式生效。

批量转换

多个文件作为命令行参数启动时,自动进入批量转换:

.\build-vs2026\bin\Release\图片工具箱.exe .\a.blp .\b.tga .\c.png

也可以把多个图片拖进窗口,或拖入文件夹扫描。批量转换支持:

  • 输入:BMP、TGA、BLP、JPG、PNG、DDS,可选择递归处理子文件夹。
  • 输出:BLP1、PNG、JPG、BMP、TIFF、TGA。
  • 原文件夹和目标文件夹输入框会本地缓存。
  • 可选择保留目标文件夹结构。
  • 同名输出文件直接覆盖。
  • 后台执行,支持进度显示、取消和失败项重试。
  • BLP1 支持自适应 256 色调色板或 JPEG 模式、0/1/4/8-bit alpha、mipmaps 和抖动。
  • JPG 不保留 alpha,编码时以白色背景合成。

命令行批量转换:

.\build-vs2026\bin\Release\图片工具箱.exe --batch-convert <原文件夹> <目标文件夹> <目标格式>

Explorer 右键二级菜单调用:

.\build-vs2026\bin\Release\图片工具箱.exe --convert-selected-to <目标格式> <文件...>

目标格式支持 blp1pngjpgbmptifftga

支持范围

  • WIC 优先:JPEG、PNG、BMP、GIF、TIFF、ICO、JXR,以及系统已安装 WIC 编解码器的格式。
  • 内置 BLP:支持 Warcraft III 常见的 BLP1 JPEG 压缩和 256 色调色板格式,支持 BLP2 DXT 解码。
  • stb_image 兜底:TGA、HDR、PSD、PNM 等部分格式。
  • WebP、HEIC、AVIF 是否可用取决于系统 WIC 编解码器。
  • DDS 目前主要用于解码预览和批量输入,输出仍按目标格式编码。

注册表和本地数据

主要当前用户注册表位置:

  • 缩略图 COM:HKCU\Software\Classes\CLSID\{6B93F7E4-4B22-4A6C-A90F-7AF657A72F28}
  • 缩略图扩展:HKCU\Software\Classes\.ext\ShellEx\{E357FCCD-A995-4576-B01F-234630154E96}
  • 打开方式 ProgID:HKCU\Software\Classes\TextureThumbPreview.Image
  • 打开方式候选:HKCU\Software\Classes\.ext\OpenWithProgids\TextureThumbPreview.Image
  • 默认应用能力:HKCU\Software\TextureThumbPreview\Capabilities\FileAssociations
  • 注册应用入口:HKCU\Software\RegisteredApplications\图片工具箱
  • 应用入口和图标:HKCU\Software\Classes\Applications\图片工具箱.exe
  • App Paths:HKCU\Software\Microsoft\Windows\CurrentVersion\App Paths\图片工具箱.exe
  • 右键转换菜单:HKCU\Software\Classes\SystemFileAssociations\.ext\shell\TextureThumbPreview.ConvertSelected
  • 批量转换路径缓存:HKCU\Software\TextureThumbPreview\ConfigGui\Batch
  • 预览显示缓存:HKCU\Software\TextureThumbPreview\ConfigGui\Viewer

缩略图组件释放目录:

%LocalAppData%\图片工具箱\Provider\<version>\exe-<size>-<timestamp>\

启动诊断日志:

%LocalAppData%\图片工具箱\Logs\startup.log
%LocalAppData%\图片工具箱\Logs\crash.log

排查

如果双击图片仍然弹“选择应用”:

  1. 配置关联 勾选对应扩展名的 双击候选
  2. 点击 应用系统默认应用
  3. 在 Windows 默认应用设置里把扩展名确认到 图片工具箱

如果 Explorer 缩略图不刷新,可尝试:

powershell -NoProfile -ExecutionPolicy Bypass -File .\scripts\refresh-explorer.ps1

也可以改文件名、刷新目录或重启 Explorer。Explorer 有缩略图缓存,注册成功不一定立刻刷新旧文件。

如果在其他电脑上白屏、无响应或闪退,请先查看:

%LocalAppData%\图片工具箱\Logs\startup.log
%LocalAppData%\图片工具箱\Logs\crash.log

startup.log 会记录 Direct3D、字体和界面初始化进度;发生未处理异常时会写入 crash.log

卸载

在 GUI 中点击 卸载本程序关联,或执行:

powershell -NoProfile -ExecutionPolicy Bypass -File .\scripts\unregister-user.ps1

卸载逻辑只移除本程序拥有或仍指向本程序的当前用户注册表项,不删除其他应用的扩展名配置,不写入或伪造 UserChoice 哈希。

验证

构建验证:

cmake --build build-vs2026 --config Release

导出函数验证:

& "C:\Program Files\Microsoft Visual Studio\18\Community\VC\Tools\MSVC\14.50.35717\bin\Hostx64\x64\dumpbin.exe" /exports .\build-vs2026\bin\Release\TextureThumbProvider.dll

应看到:

  • DllCanUnloadNow
  • DllGetClassObject
  • DllRegisterServer
  • DllUnregisterServer

注册表验证可检查 OpenWithProgidsApplicationsCapabilitiesSystemFileAssociations 是否写入 HKCU。

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors