我新鲜出炉的 plist 图集拆图工具!github

这些年,我一直在使用 JavaScript 、CocosCreator做开发,只要是他们不能解决的,我都不太愿意去弄,或者说是不太情愿去做。真的是手中有把锤子,看什么都是钉子,越是熟悉一样东西,越容易被思维定式给束缚,难以成长!

前段时间,我在尝试学习 Python,想用来做点什么,一直没想好。我必须得学以致用才行,不然过两天又忘记了,但这次机会来了!

前两天,有位老朋友找到我,寻求 Cocos 图集的裁图工具,我顺手给了一个 Windows 版本的 PngSplit.exe,我曾经用过多次感觉还行!


小知识:初学的伙伴可能还不清楚,什么是「图集」

图集通常是使用 TexturePacker 这个工具,将多张小的碎图合并,导出生成一个 png 文件与同名的 plist 文件。

TexturePacker Mac版

游戏引擎通过解析 plist 文件,获取对应 png 图片上的子图,还原碎图。通过图集可以减少文件体积,提高文件加载速度,更重要的是他能减少 Drawall 提升渲染效率!

但,我刚给了朋友后,想到如果是 Cocos 格式的图集是有 plist 文件的,通过 plist 可以完美换原之前的碎图,但使用 PngSplit 拆分一些有透明像素的帧动画图片就不行了!

PngSplit 导出的子图有两大缺陷:

  1. 图像周围透明区域,并不是还原碎图最原始的样子;

  2. 无法还原文件名,特别是序列帧文件,文件顺序是乱序的;

这样生成的资源,要重新制作动画难度非常之大,还需要花更多的时间。想到这里,有点点兴奋,我拿起 Python 开干!代码大概分成两大部分:

  1. 解析 plist 文件,解析出子图在图集中的矩形位置

  2. 通过分析出的子图矩形数据,将子图纹理导出生成图像

大的思维有了,解析 plist 应该是有对应的工具库的,我也是 Python 小白 面向百度编程 绝对是不能不掌握的技巧

输入:python3 plist 解析


出来的大部分是用 plistlib 这个库,而且是 Python 自带的! 非常好,第一个问题有解了,先不管细节,再看第二个问题!

继续在百度上搜索:python3 图片处理


有一个名为 PIL 的库显示的最多,简单了解一下:

python image library 图像库,处理图像功能,该库提供了广泛的文件格式支持,如JPEG、PNG、GIF、等,它提供了图像档案、图像显示、图像处理等功能。

注意安装时,使用的是:pip install pillow

大概花了半个小时,简单了解了一下 PIL 的功能,其中的 Image 模块正是我需要的 :

# 从当前图像返回矩形区域的副本
# box是一个4元祖,定义从左、上、右、下的像素坐标
Image.crop(box)

有了大概的了解,就开始真正的动手了,刚开始真的很不习惯,经常范错,比如:

  • 定义变量加 var

  • 每行末尾加分号

  • if () 用括号

  • 基础数据类型的属性方法记不住......

好两次我想放弃了,明明知道怎么做,就是弄不好,语法出错,运行报错!

最气人的是,我写出的代码,到处是波浪线,我用的是 PyCharm 这个神器级别的IDE。

还好我坚持完成了第一个版本,也就 50 多行代码,拆分的图片还不带透明区,因为我只会使用Image.crop 这个函数,剩下的我还不会。

休息了两天,再次捡起来,我又找到两个 Image 对象上的方法:

# 翻转、旋转图像
image = image.transpose(Image.ROTATE_90)

# 将image图像粘贴base图像中
# box参数我给的是偏移2元组
base.paste(image, (offset_x, offset_y))

功能搞定生成图片非常完美,还原了 plist 中的文件名、原始大小、透明区域偏移,整个代码加上注释也不到100行。

最后,我还研究了一下 Python 的代码规范,与 JS、TS 完全不是一个门派的。Python 的变量名、函数名都是用小写,代码之间用下划线隔开,感觉是回到了读书时用的 C 语言的年代

终于整个代码清爽起来了,而且我还加了不少注释。

最后版本

虽然东拼西凑将功能实现了,但我总觉得怪怪的,第一次用 Python 做个开源小工具求大神们指点,还有那些可以改进的地方,也希望这个工具脚本能帮助到大家,节省、省力、省钱!

github仓库地址,您也可以通过【阅读原文】跳转链接!
https://github.com/ShawnZhang2015/tp-png-split.git 

原创不易,码字不易,感谢点赞分享,愿我们一起共同成长!

1. 2020社区最新教程精华700+页PDF!
2. 腾讯课堂Creator零基础修仙实战上线啦!
3. 游戏换皮被默许,微信后台竟然支持代码授权
4. NativeAPI手机原生功能调用接口丰富
5. Creator全自动代码生成器来袭!
6. 卧槽,一不小心我成副业案列了!

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值