repkg 完整上手指南:三步快速解包 Wallpaper Engine 的 PKG 资源包,批量把 TEX 纹理转成 PNG
【免费下载链接】repkgWallpaper engine PKG extractor/TEX to image converter项目地址: https://gitcode.com/gh_mirrors/re/repkg
repkg 是一款开源的 Wallpaper Engine 资源提取工具,用一条命令就能解包 PKG 资源包、把打不开的 TEX 纹理转成 PNG 图片。这份指南会带你从安装编译到批量处理走完全程,全程命令行、无需图形界面,新手也能一看就会。
你是不是也遇到过这个尴尬
从创意工坊下载了一个惊艳的壁纸,想拆开看看里面的素材是怎么做的,结果发现整个文件夹里只有一个打不开的.pkg文件;或者好不容易收集了一堆纹理素材,全是.tex后缀,Photoshop 不认、看图软件也不认,只能干瞪眼。
这不是你的问题,是 Wallpaper Engine 的资源格式太封闭了。.pkg是壁纸打包后的容器,.tex是它专用的纹理格式,内部用了 DXT 这类 GPU 压缩算法,普通图像软件根本读不懂。而 repkg 这个开源小工具,就是专门来破解这两件事的,它由开发者对 Wallpaper Engine 的文件格式做逆向分析后实现,用 C# 写成,整个操作只有一条命令。
repkg 到底能帮你做什么
动手之前,先花一分钟看清它的三个核心能力,你就能判断它值不值得进你的工具箱:
- 它能解包 PKG 资源包。壁纸工程打包后,纹理、模型、配置全塞在
.pkg里。repkg 能按原始目录结构把内容全部还原,让你直接看到壁纸的"内脏"。 - 它能翻译 TEX 纹理。repkg 内置完整的解码逻辑,把 DXT1、DXT3、DXT5 等压缩纹理转成 PNG 通用格式,顺带生成一份
.tex-json信息文件,把分辨率、格式、帧信息都列给你。 - 它能还原壁纸工程。配合
-c参数,解包时会顺便把project.json和预览图一起复制出来,你得到的几乎就是一个可以重新打包提交的工程目录。
一句话总结:PKG 进去,素材出来;TEX 进去,PNG 出来,中间不需要任何图形界面。
三步跑通第一次解包:从安装到出图
别急着研究所有参数,先跑通一次完整流程,建立起"原来这么简单"的体感,后面的进阶玩法自然就顺了。
第一步:克隆源码并编译
repkg 基于 .NET 开发,编译需要 .NET SDK 支持。把源码克隆到本地,然后编译 Release 版本:
git clone https://gitcode.com/gh_mirrors/re/repkg cd repkg dotnet build RePKG.sln -c Release编译产物在RePKG/bin/Release/目录下。把repkg可执行文件所在目录加进系统 PATH,之后就能在任意位置直接敲repkg了。
第二步:解包你的第一个 PKG
找一个创意工坊里下载的壁纸文件,比如scene.pkg,执行:
repkg extract scene.pkg -o ./unpacked # 输入文件 输出目录几秒钟后打开unpacked目录,你会发现壁纸的全部资源已经按目录结构摆放好了。这就成功了,就是这么简单。
第三步:把 TEX 转成图片
在解包结果里通常能找到.tex文件,单独拿一个出来转成图片:
repkg extract -t ./unpacked -o ./png_out # 把目录下所有 TEX 转成图片-t的意思是"把指定目录下所有 TEX 文件转成图片",转换结果以原文件名命名、PNG 格式输出,旁边还会多出一个.tex-json信息文件。用任何看图软件打开 PNG,你会发现纹理被完整还原了。💡 顺带一提,如果 TEX 里存的是动画纹理,repkg 甚至会直接给你导出成 GIF。
进阶玩法:用组合拳批量打理素材库
单个命令好懂,但 repkg 真正的威力在于组合。下面用一个完整的"壁纸素材回收"流程,把主要功能串起来演示。
假设你在~/wallpapers目录下堆积了大量创意工坊下载的壁纸,想统一处理成可用的素材库:
第一步,批量解包,并顺便还原成壁纸工程结构。
repkg extract -c -r ~/wallpapers -o ~/library # ^复制工程文件 ^递归扫描子目录-r让 repkg 递归扫描子目录里的所有 PKG 文件,-c会把每个壁纸旁边的project.json和预览图一并复制到输出目录。跑完之后,~/library下就是一堆按壁纸 ID 命名的文件夹,每个文件夹都是一份完整的工程素材。
第二步,只挑纹理,转成 PNG 统一归档。
repkg extract -e tex -s -r ~/library -o ~/library/png # ^只提 tex 类型 ^平铺到同一目录-e tex表示只提取.tex类型的条目,-s把所有文件平铺到同一个目录(不保留原路径),这样你就得到了一个全是图片的扁平目录,方便后续批量浏览或二次加工。
第三步,用 info 命令给素材库做个体检。
repkg info ~/library/123456789/scene.pkg -e -s -b size # ^打印条目 ^按大小排序-e打印包内所有条目,-s -b size让条目按文件大小排序。一眼就能看出哪个壁纸最"重",清理硬盘时心里有数。
三条命令,覆盖了解包、转换、分析三个环节,一个素材库就打理好了。另外它还藏了一个interactive交互模式:敲repkg interactive启动后,可以直接在终端里连续输入命令,适合一次处理很多文件的场景,比反复敲完整命令顺手得多。
核心参数速查表
repkg 有extract和info两个子命令,常用参数不多,整理成一张表方便随时查阅:
| 子命令 | 参数 | 作用 |
|---|---|---|
| extract | -o | 指定输出目录(默认./output) |
| extract | -e | 只提取指定扩展名的条目,逗号分隔 |
| extract | -i | 跳过指定扩展名的条目 |
| extract | -t | 把目录下所有 TEX 转成图片 |
| extract | -r | 递归扫描子目录 |
| extract | -c | 复制 project.json 和预览图 |
| extract | -n | 用 project.json 里的标题命名输出文件夹 |
| extract | -s | 所有文件输出到同一目录 |
| extract | --no-tex-convert | 解包时不做 TEX 转换 |
| extract | --overwrite | 覆盖已存在的文件 |
| info | -e | 打印包内条目清单 |
| info | -s -b | 按名称/扩展名/大小排序 |
| info | -p | 输出 project.json 中指定的字段 |
| info | --title-filter | 按标题关键字过滤 |
新手最容易踩的 5 个坑
用过一段时间 repkg 的人,几乎都在这几个地方栽过跟头,提前知道能省不少事。
坑一:默认不覆盖文件。repkg 默认跳过已存在的文件,重复跑同一个命令会看到一堆Skipping, already exists。想要强制重来,记得加--overwrite。
坑二:输出目录的路径问题。不指定-o时,结果会输出到当前工作目录下的output文件夹,而不是输入文件旁边。批量处理前先想清楚-o指向哪里,否则容易在奇怪的地方找到一堆文件。
坑三:-t作用在目录上,不是单个文件。很多新手以为repkg extract -t texture.tex能直接转换单文件,实际上-t是针对"目录"的选项,会把目录里所有 TEX 一起处理。转换单个 TEX 文件,直接repkg extract xxx.tex -o ./out就行,程序会自动识别扩展名走转换分支。
坑四:解包目录结构的两种模式。默认情况下解包会保留 PKG 内部的目录层级,加了-s则全部平铺。批量导出素材时用-s更省事;需要保留原始结构(比如想重新打包提交工程)就别加。
坑五:TEX 转换失败不一定代表文件损坏。输出里出现Failed to write texture时,先看看是不是该纹理用了不支持的格式。repkg 对常见的 DXT1/3/5、RGBA8888、RG88、R8 都有支持,但极少数特殊变体可能解析不了,换个文件试试往往就正常了。🚧
它是怎么做到的:一次简单的逆向科普
repkg 的原理并不神秘,本质是对 Wallpaper Engine 私有格式的逆向实现。弄清楚一点点底层逻辑,你排查问题时思路会清晰很多。
PKG 文件的解析分三步:先读取文件头的魔数,校验这是一个合法的资源包;然后解析目录结构,得到每个条目的路径、大小和类型;最后按条目逐个读取数据。解包时对 TEX 类型条目会额外走一遍纹理解码流程——读取纹理头部信息(格式、宽高、Mipmap 层级),再把 DXT 等压缩数据解码成原始像素,最后交给图像库编码成 PNG 输出。
从代码结构上,项目也遵循了这个分工:RePKG.Core定义数据模型和接口,RePKG.Application实现具体的读写与转换逻辑,RePKG目录是命令行入口。想深入研究的读者,直接看PackageReader和TexToImageConverter这两个文件就能抓住主线。
最后说两句
repkg 把原本需要专业工具才能完成的工作压缩成了一行命令,这正是开源小工具的可爱之处——它不追求大而全,只专注把一件事做到顺手。
需要提醒的是,从壁纸中提取的素材应当仅用于学习、研究和个人创作,请尊重原作者版权,不要将提取内容用于商业分发或二次售卖。
现在,去找一个你好奇已久的壁纸,跑一次repkg extract,看看里面到底藏着什么吧。
【免费下载链接】repkgWallpaper engine PKG extractor/TEX to image converter项目地址: https://gitcode.com/gh_mirrors/re/repkg
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考