从 Wallpaper Engine 创意工坊目录中提取图片与视频资源的桌面工具。
面向本地归档、素材整理、纹理研究与媒体导出,而不是复刻 Wallpaper Engine 播放运行时。
为什么会有这个项目 · 核心能力 · 界面预览 · 工作流 · 快速开始 · 项目结构
Wallpaper Engine 创意工坊的很多壁纸资源并不是直接平铺在文件夹里,而是混合了 project.json、scene.pkg、.tex、预览图和视频文件。
这个项目的目标很明确:
- 扫描本地 Steam 创意工坊中的 Wallpaper Engine 项目目录
- 尽可能提取其中真正可用的图片与视频素材
- 在桌面应用里直接预览提取结果
- 对单个媒体文件做导出,减少手动翻缓存目录或回到命令行的负担
其中 431960 是 Wallpaper Engine 在 Steam 创意工坊内容目录下使用的应用 ID。
实际路径并不固定在某个盘符上,通常是某个 Steam 库下的 steamapps/workshop/content/431960;如果你把 Steam 库或创意工坊内容放到了其他磁盘,这个上层路径也会随之变化。
当前项目聚焦“媒体提取与导出”。
它不是 Wallpaper Engine 的运行时替代品,也不是完整的壁纸播放器。
| 能力 | 说明 |
|---|---|
| 创意工坊扫描 | 扫描本地 Steam 库中的 steamapps/workshop/content/431960 目录并建立可浏览库,431960 为 Wallpaper Engine 的应用 ID,盘符和库路径可自定义 |
| 场景包解析 | 解析 scene.pkg 的 PKGV000x 结构并提取包内资源 |
| TEX 解码 | 对常见 TEXV0005 纹理执行解码,输出可直接使用的图片文件 |
| 媒体预览 | 在应用内预览图片与视频,不需要手动翻缓存目录 |
| 单项导出 | 右键导出某一个媒体文件,适合做素材整理 |
| 多语言界面 | 当前支持中文、日文、英文切换,默认中文 |
当前 README 中展示的界面截图来自项目当前版本,而不是早期原型。
上图对应的是当前已经收缩后的主线形态:
- 左侧是创意工坊库
- 中间是媒体工作区
- 右侧是媒体预览
- 交互重点放在媒体提取、预览与导出
下面这张图概括了当前版本的核心工作流:从扫描本地创意工坊目录,到提取媒体、预览结果,再到导出文件。
典型使用流程:
- 扫描本地创意工坊库
- 选择一个
scene或video壁纸 - 解包资源并解码可提取媒体
- 在应用内预览图片或视频
- 导出单个媒体文件用于归档或二次整理
当前版本重点支持这些场景:
scene壁纸的scene.pkg解析与媒体提取- 常见
TEX纹理资源转可视图片 - 直接存在于工坊项目中的图片和视频媒体
- 本地缓存目录中的快速复查与导出
当前不以这些能力为目标:
- 不尝试还原 Wallpaper Engine 的完整播放效果
- 不以运行
web/application类型壁纸为主目标 - 不追求把所有未知包字段都变成最终用户可见功能
项目采用桌面壳 + 解码核心分层:
Electron + React负责桌面界面、预览、导出和工作流交互Rust负责包解析、索引、缓存和 TEX 解码Playwright + Vitest负责桌面冒烟和前端/主进程测试
这种分层让界面可以持续演进,同时把真正复杂的二进制处理放在更适合做解析和性能控制的语言里。
不需要安装 Node.js、Rust 或源码。直接从 GitHub Releases 下载最新版:
WallpaperEngineMediaExtractor-*-setup.exe:安装版,适合长期使用WallpaperEngineMediaExtractor-*-portable.exe:便携版,下载后可直接运行
下面内容只面向想从源码运行或参与开发的用户:
- Node.js 22+
- npm 11+
- Rust stable toolchain
- Windows 10/11
npm install
cargo test --manifest-path crates/decoder-core/Cargo.tomlnpm run devnpm start
npm run build
npm run dist:win
npm run typecheck
npm run test:renderer
npm run test:main
npm run test:e2e
cargo test --manifest-path crates/decoder-core/Cargo.toml更多开发说明见 docs/guides/development-setup.md。
.
├─ crates/
│ └─ decoder-core/ Rust extraction and decoding engine
├─ docs/
│ ├─ assets/readme/ README illustrations and screenshots
│ └─ guides/ Contributor-facing setup and usage docs
├─ resources/
│ └─ icons/ Desktop app icon assets
├─ src/
│ ├─ main/ Electron main process
│ ├─ preload/ Secure preload bridge
│ ├─ renderer/ React renderer app and static assets
│ └─ shared/ Shared TypeScript contracts
├─ tests/
│ ├─ e2e/ Playwright desktop smoke tests
│ ├─ fixtures/ Small committed fixtures
│ └─ renderer/ Renderer test setup
└─ .fixtures-local/ Large local-only wallpaper corpora (ignored)
- 大体积的本地壁纸样本应放在
.fixtures-local/,不要提交到仓库 - 构建输出、缓存、测试报告和本地 IDE 状态文件都已通过
.gitignore排除 - 项目当前可用,但仍处在持续打磨的阶段,欢迎围绕“媒体提取质量”和“导出体验”继续改进
本项目与 Wallpaper Engine、Steam 或其所属公司没有官方关联。
仓库中不包含 Wallpaper Engine 创意工坊内容本身;用户应只对自己合法拥有或有权处理的本地资源进行分析与导出。
This project is released under the Apache License 2.0, which permits commercial use.


