从 PKG 到 PNG:用 RePKG 完成 Wallpaper Engine 资源提取与 TEX 格式转换
【免费下载链接】repkgWallpaper engine PKG extractor/TEX to image converter项目地址: https://gitcode.com/gh_mirrors/re/repkg
深夜,朋友发来一条求助消息:"我订阅的那个动态壁纸,配色要是能改成深色调就好了。"我打开 Steam 创意工坊的订阅目录,找到那个壁纸的专属文件夹——里面躺着一个.pkg文件,旁边还有几张以.tex结尾的图片。双击图片,系统弹出"无法打开此文件";拖进看图软件,同样不认。那一刻我明白了:想改一个壁纸,得先过格式这一关。
这正是无数 Wallpaper Engine 玩家共同的处境:壁纸明明下载到了本地,素材却像被锁在保险柜里。.pkg是 Wallpaper Engine 的资源打包格式,所有图像、脚本、配置都被塞进这一个文件;.tex是它私有的纹理格式,普通软件一概不识别。想提取、想修改、想备份,都无从下手。
好在,有一款叫RePKG的开源工具专门解决这件事。它是用 C# 写成的 Wallpaper Engine 资源提取与格式转换工具,核心能力就两句话:解开 PKG 封装,把 TEX 纹理还原成 PNG 或 GIF。下面我就从自己的踩坑经历说起,带你把它用起来。
没有它之前,大家是怎么折腾的
在没有这类工具的日子里,想拿到壁纸里的原始素材,基本只有三条路:
- 十六进制硬啃:用十六进制编辑器打开 PKG,对照网上零散的格式笔记,一个字节一个字节地猜哪个是文件名、哪个是数据段。运气好能翻出几张图,运气不好一下午就搭进去了。
- 通用解包工具轮番试:拿各种压缩包/资源解包工具去硬解 PKG,十有八九直接报"格式不支持",偶尔解出东西也是乱码目录。
- 截图凑合用:壁纸播放时按截图键,把想要的画面截下来。图是有了,但分辨率受屏幕限制,透明通道、动画帧全部丢失,根本没法二次创作。
这些办法的共同问题是:麻烦、易错、不可复用。每换一个壁纸,同样的流程得再来一遍。
RePKG 的做法:一条命令,两件事一起办
RePKG 的思路很简单——既然格式是被逆向研究过的,那就让程序替人干活。它同时解决了解包和转码两个环节:
- 读取 PKG 内部结构,把每个条目按它在包里的路径还原成真实文件;
- 识别出其中的 TEX 纹理,自动解压(LZ4 压缩、DXT1/3/5 等压缩格式都能处理),再转成通用图片格式。
而且它不止"提取"——配合-c参数,它还能把 PKG 连同旁边的project.json、预览图一起还原成一个完整的 Wallpaper Engine 项目文件夹,意味着提取出来的东西可以直接重新导入使用。
工具是命令行程序,名字就叫repkg,一共两个主命令:extract(提取/转换)和info(查看包和纹理的信息)。
三步上手:从下载到跑出第一张 PNG
第一步:拿到程序
环境里装好 .NET SDK 后,克隆源码并编译:
git clone https://gitcode.com/gh_mirrors/re/repkg cd repkg dotnet build编译产物在RePKG/bin/下,把repkg(Windows 下是RePKG.exe)放进 PATH,或者直接用完整路径调用都可以。
第二步:跑第一条提取命令
repkg extract 我的壁纸.pkg这一条命令做了四件事,你基本不用操心:
- 在当前目录下创建
output文件夹; - 解析 PKG 内部结构,把每个文件按包内路径还原出来;
- 遇到 TEX 纹理,自动转成 PNG 存到同目录;
- 是动画纹理的话,会转成 GIF 输出。
第三步:用 info 命令"体检"
提取之前,可以先给文件做个"体检",看看包里到底装了什么:
repkg info -e 我的壁纸.pkg-e会列出包内所有条目及各自大小,相当于先看菜单再点菜。
几个真正常用的参数,一次讲清
extract的参数不少,但日常高频的就下面这几个,我按使用频率排了序:
| 参数 | 作用 | 典型用法 |
|---|---|---|
-e | 只提取指定扩展名的文件 | -e tex,png只要图片类 |
-i | 跳过指定扩展名的文件 | -i mp3,wav不要音频 |
-s | 所有文件平铺到一个目录,不保留包内路径 | 整理素材时很好用 |
-r | 递归搜索子文件夹里的所有 PKG | 批量处理整目录 |
-c | 把旁边的 project.json 和预览图一起复制出来 | 还原成可导入的项目 |
-n | 用 project.json 里的标题作为输出文件夹名 | 代替默认的数字 ID |
--no-tex-convert | 只解包,不做纹理转码 | 文件太大时的降载方案 |
-o | 指定输出目录 | -o ./素材库 |
info命令也值得记两个:-p *可以导出 project.json 里的全部字段,--title-filter能按壁纸标题过滤,批量查看几百个包时非常省眼力。
两个贴近日常的用法
用法一:把整个创意工坊订阅目录变成自己的素材库
创意工坊的订阅内容都在steamapps/workshop/content/431960这个目录下(不同系统盘符不同),每个壁纸一个子文件夹。想一次性把所有壁纸的素材都扒出来分类归档:
repkg extract -r -c -e tex,png,jpg,mp3,wav -o ./素材库 \ "E:\Steam\steamapps\workshop\content\431960"-r让它在所有子目录里找 PKG,-c带上每个壁纸的配置和预览图,-e只挑素材类文件,最后统一收进素材库文件夹。
适合谁用:想建个人素材库的壁纸收藏党、想拿现成素材练手的视觉设计初学者。这一招比逐个手动解包省下大量时间。
用法二:把壁纸改完再导回去
想给壁纸换色、换图,或者删掉某个不喜欢的功能模块?流程只有三步:
- 提取成可编辑项目:
repkg extract -c -n 原壁纸.pkg- 在输出目录里动手改:换掉 PNG 图片、编辑 project.json、调整脚本;
- 打开 Wallpaper Engine,选"从文件夹导入",指向包含 project.json 的目录,完事。
为什么这样用:-c保证项目结构完整,-n让文件夹名字可读,改完的目录就是一个标准壁纸项目,导入即用,不需要任何额外处理。
新手最容易踩的三个坑
坑一:报错 "Unknown magic"
看到这个错先别慌,它只是说"文件头不认识"。八成是两种情况:文件本身不是 Wallpaper Engine 的 PKG(比如从别处下的同名文件),或者下载不完整。从创意工坊正常订阅下来的文件一般不会出这个问题。
坑二:转出来的图片颜色怪怪的
部分 TEX 纹理内部用的是特殊通道排列,直接看图会觉得偏色。先别急着怀疑工具坏了,用repkg info看看纹理的格式信息,确认它是哪种压缩格式。多数情况下这只是源纹理的特性,不是转换错误。
坑三:大项目处理到一半内存吃紧
遇到体积很大的壁纸,可以分两步走:先用--no-tex-convert只解包不转码,把原始文件落盘;之后再用repkg extract -t -s单独对目录里的 TEX 做批量转码。这样每步的负载都小很多,也方便定位是哪一步出问题。
写在最后:动手之前先想清楚三件事
第一,先挑简单的练手。找一个体积小的静态壁纸,跑通"提取—修改—导回"完整链路,再碰动画壁纸和复杂项目。第二,批量操作前先单测一个。-e、-i这些过滤参数写错代价不大,但直接对几百个文件跑错参数就麻烦了。第三,守住合规边界。逆向工具是用来学习和创作的,请遵守 Wallpaper Engine 的使用条款,尊重原作者版权:提取的素材只用于个人学习、备份或已获授权的二次创作,不要拿去商用或公开传播。
最后,用几句话概括这个工具打动我的地方:
- 解包与转码一条命令完成,中间环节全部自动化;
- 能把 PKG 还原成可直接重新导入的项目,形成完整闭环;
- 过滤、递归、批量、平铺等参数齐全,大规模整理素材也不怵;
- 纯命令行、无图形界面依赖,脚本化批量处理很顺手;
- 格式逆向过程公开透明,遇到问题也方便自行排查或反馈。
从"对着十六进制发呆"到"一条命令拿到 PNG",RePKG 把 Wallpaper Engine 资源提取的门槛降到了最低。现在就找个你最喜欢的壁纸,跑通第一条命令试试看吧。
【免费下载链接】repkgWallpaper engine PKG extractor/TEX to image converter项目地址: https://gitcode.com/gh_mirrors/re/repkg
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考