将多张图片合并为一张图集(sprite atlas),支持 CLI 和 GUI 两种使用方式。
- 图片格式:PNG 32-bit / 24-bit / 8-bit、JPEG
- 装箱策略:Best Short Side Fit、Best Long Side Fit、Best Area Fit、Bottom Left
- 选项配置:间距、最大尺寸、最大列数、裁剪透明边距、2 的幂次尺寸、元数据输出
- 输出:图集图片 + JSON 元数据
texture_packer/
├── texture-packer-cli/ # Rust CLI 工具
│ ├── Cargo.toml
│ └── src/
│ ├── main.rs # CLI 入口
│ └── packer.rs # MaxRects 装箱算法
├── texture-packer-tauri/ # Tauri v2 桌面应用
│ ├── src/ # React 前端
│ │ ├── App.tsx
│ │ └── styles.css
│ └── src-tauri/ # Rust 后端
│ └── src/
│ ├── packer.rs # MaxRects 装箱算法
│ └── commands.rs # Tauri 命令
└── AGENTS.md
cd texture-packer-cli
cargo build --release
# 打包目录下所有图片
./target/release/tpack ./sprites/ -o atlas.png
# 指定格式和选项
./target/release/tpack ./sprites/ --image-format jpg --max-size 2048 --trim
# 查看所有选项
./target/release/tpack --helpcd texture-packer-tauri
npm install
npx tauri dev打包为独立应用:
npx tauri build
# 生成文件位于 src-tauri/target/release/bundle/| 参数 | 默认值 | 说明 |
|---|---|---|
-o, --output |
<文件夹名>.png |
输出路径 |
--image-format |
png32 | 图片格式:png32 png24 png8 jpg |
--max-size |
4096 | 图集最大尺寸(像素) |
--padding |
0 | 精灵间距(像素) |
--max-columns |
0 | 每行最大图块数,0 表示不限制 |
--strategy |
ssf | 装箱策略:ssf lsf af bl |
--trim |
关闭 | 启用透明边距裁剪 |
--power-of-two |
关闭 | 强制 2 的幂次尺寸 |
--metadata |
关闭 | 输出 JSON 元数据 |
--format |
json | 元数据格式:json |
| 策略 | 说明 |
|---|---|
| ssf (Best Short Side Fit) | 选择短边剩余最小的位置,整体紧凑 |
| lsf (Best Long Side Fit) | 选择长边剩余最小的位置,倾向方正 |
| af (Best Area Fit) | 选择面积最匹配的位置,适合大小差异大的场景 |
| bl (Bottom Left) | 优先放在左下角,排列整齐 |
Packing 12 images...
Atlas: 256x192 (12 sprites)
Coverage: 72.3%
Saved: atlas.png
Done in 0.01s
- CLI:Rust 1.70+、clap、image
- GUI:Node.js 18+、Rust、Tauri v2