Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/zhs007/texturepackerjs
https://github.com/zhs007/texturepackerjs
Last synced: 8 days ago
JSON representation
- Host: GitHub
- URL: https://github.com/zhs007/texturepackerjs
- Owner: zhs007
- License: mit
- Created: 2015-12-02T02:38:13.000Z (almost 9 years ago)
- Default Branch: master
- Last Pushed: 2016-01-14T02:52:55.000Z (almost 9 years ago)
- Last Synced: 2023-03-01T12:36:53.388Z (over 1 year ago)
- Language: JavaScript
- Size: 7.81 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# TexturePackerJS
TexturePacker是一个很好用的软件,但我们有一些特殊需求,不太方便用TexturePacker,所以就想自己写一个纯命令行的,需求所限,不会有那么强大的功能,够用就好。关于NodeJS的图像库
---
NodeJS并没有好用而且全的图像库,当然这里说的是能把图像解开到内存中,能操作像素数据的那种。NodeJS有个gm的库,可以通过gm命令行做很多图形操作,大部分需求其实可以通过这个来实现。
最开始的想法很简单,libpng、libjpeg这些其实都可以很方便的跨平台使用,npm上确实也有这样的库,但现在貌似几乎都编译不了了,github上看起来作者也没有维护来着。
从我们的需求来看,速度不是一个很大的问题,所以就找了一堆原生js的图片读取库,这种一般来说,就算版本升级,大部分也都是可以用的。
关于算法
---
TP的算法做得算是不错的了,我们尽可能的接近TP就好了,肯定是要切除纯透明区域,然后有一个间隔,然后有一定的图像旋转,最后拼出来的图片越小越好。图片大小也有一些限制,譬如2的整数次幂这种,有可能会要求高度宽度一样。具体算法就是在一定规则下,穷举,选一个最优解出来就行。
批量文件重命名
---
指望美术出图按命名规范是一件很难的事,所以我们还增加一个批量命名功能。```
texturepackerjs rename **/*.png %d.png
```这个命令,会遍历当前目录的所有子目录,按不同目录将文件重命名成``%d.png``,这里可以使用``%03d.png``之类的。
每个目录会重新计数。
目录展开
---
因为最终需要拼图,为了底层引擎遍历更高效,我们会希望将目录展开,保证每个文件名不一样。譬如最开始的目录结构是:
```
npc/idle/000.png
npc/idle/001.png
npc/act/0000.png
npc/act/0001.png
```我们可以变成
```
npc_idle_000.png
npc_idle_001.png
npc_act_0000.png
npc_act_0001.png
```这样是不是很方便呢?