运用Python2拆TexturePacker为cocos打包的plist图集

step1

安装 Python 2.7 https://www.python.org/download/

step2

配置Python环境变量

  1. 配置用户变量Path
    配置用户环境变量
  2. 配置系统变量Path
    配置系统环境变量

step3

Python2安装PIL

pip install Pillow==2.9.0

cmd窗口执行命令安装PIL

step4

创建切图python脚本unpack_plist.py

#!python
import os,sys
from xml.etree import ElementTree
from PIL import Image

def tree_to_dict(tree):
    d = {}
    for index, item in enumerate(tree):
        if item.tag == 'key':
            if tree[index+1].tag == 'string':
                d[item.text] = tree[index + 1].text
            elif tree[index + 1].tag == 'true':
                d[item.text] = True
            elif tree[index + 1].tag == 'false':
                d[item.text] = False
            elif tree[index+1].tag == 'dict':
                d[item.text] = tree_to_dict(tree[index+1])
    return d

def gen_png_from_plist(plist_filename, png_filename):
    file_path = plist_filename.replace('.plist', '')
    big_image = Image.open(png_filename)
    root = ElementTree.fromstring(open(plist_filename, 'r').read())
    plist_dict = tree_to_dict(root[0])
    to_list = lambda x: x.replace('{','').replace('}','').split(',')
    for k,v in plist_dict['frames'].items():
        rectlist = to_list(v['frame'])
        width = int( rectlist[3] if v['rotated'] else rectlist[2] )
        height = int( rectlist[2] if v['rotated'] else rectlist[3] )
        box=( 
            int(rectlist[0]),
            int(rectlist[1]),
            int(rectlist[0]) + width,
            int(rectlist[1]) + height,
            )
        sizelist = [ int(x) for x in to_list(v['sourceSize'])]
        rect_on_big = big_image.crop(box)

        if v['rotated']:
            rect_on_big = rect_on_big.rotate(90)

        result_image = Image.new('RGBA', sizelist, (0,0,0,0))
        if v['rotated']:
            result_box=(
                ( sizelist[0] - height )/2,
                ( sizelist[1] - width )/2,
                ( sizelist[0] + height )/2,
                ( sizelist[1] + width )/2
                )
        else:
            result_box=(
                ( sizelist[0] - width )/2,
                ( sizelist[1] - height )/2,
                ( sizelist[0] + width )/2,
                ( sizelist[1] + height )/2
                )
        result_image.paste(rect_on_big, result_box, mask=0)

        if not os.path.isdir(file_path):
            os.mkdir(file_path)
        outfile = (file_path+'/' + k).replace('gift_', '')
        print outfile, "generated"
        result_image.save(outfile)

if __name__ == '__main__':
    filename = sys.argv[1]
    plist_filename = filename + '.plist'
    png_filename = filename + '.png'
    if (os.path.exists(plist_filename) and os.path.exists(png_filename)):
        gen_png_from_plist( plist_filename, png_filename )
    else:
        print "make sure you have boith plist and png files in the same directory"

step5

执行命令切图
命令行: python unpack_plist.py plist文件名称
比如: python unpack_plist.py loading (我的plist文件全名为 loading.plist)
cocos拆图集命令

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: TexturePacker是一个强大的工具,用于制作和编辑图像的精灵表或图集,这使得游戏开发者可以有效地管理和提高游戏的性能。TexturePacker还提供了一种方便的方法,通过图集,将大型图像资源分解为更小的部件,以便在游戏中更好地使用。 图集可以通过多种方式实现,其中一个流行的方法是使用TexturePacker的命令行选项。通过使用命令行选项,可以自动化图集的过程,并根据需要生成多个子图像资源。这对于大型游戏项目特别有用,因为游戏需要处理大量的图像资源,而图集可以大大减少应用程序的加载和处理时间。 使用TexturePacker进行图集分时,可以选择多种分选项。例如,可以将图像资源按行或列分割,在固定的边框或网格上分割,或使用自定义切割边框。这意味着开发者可以完全控制分过程,以确保生成最优化的子图像资源。 总之,TexturePacker图集分功能提供了一种完全可定制的方法,以在游戏中轻松管理和加载大量图像资源。它不仅可以提高游戏的性能和加载速度,还可以减轻开发者的负担,使其更专注于游戏的核心功能。 ### 回答2: TexturePacker是一款常用的纹理打包工具,可以将多个小图合并成一张图集进行优化,提高游戏或应用的性能和加载速度。而图集则是将一个大的图集按照指定的规则进行切分,分离出多张小的图集。 使用TexturePacker图集可以使得游戏或应用更加灵活,可以根据场景需要加载不同的图集,减少资源浪费。同时也可以方便地进行图集的维护和优化,提高整个项目的可维护性和效率。 图集的方法有多种,可以按照文件名、大小、引用次数等规则进行切分。在TexturePacker工具中,可以通过选择“多文件输出”来实现图集功能,选择合适的规则进行配置即可。在导出图集时,生成多张小的图集,每张图集包含指定的纹理,可以根据需要分别加载。 需要注意的是,图集虽然提高了灵活性和可维护性,但也会增加文件数量和加载次数,可能会影响到游戏或应用的性能。因此在使用时需要根据实际情况进行权衡和优化。 ### 回答3: TexturePacker是一个非常方便的工具,它可以将多张图片合并成一个大的图集,以提高游戏或应用程序的性能和加载速度。但是,当图集非常大时,可能会导致内存占用过高或加载速度变慢。在这种情况下,可以使用TexturePacker分功能,将大图集分成多个小图集图集的步骤非常简单。首先打开TexturePacker,选择要分的图集并点击“Split”按钮。然后,选择一个合适的输出目录和文件名前缀,并定义分的数量和方式。可以按像素大小或图像数量分,并设置间隙和边距。最后,单击“Publish”按钮,TexturePacker会根据你的设置自动图集并生成多个小图集分后,你的代码需要进行相应的更改,以便正确加载分后的图集。在访问图集时,你应该使用一个列表或数组,并遍历所有分的图集,并将它们合并成一个最终的纹理。这可以通过loadTextures方法或类似方法实现,其中,你需要指定分别加载每个小图集的路径和文件名,并将它们组合成一个单个的纹理开发包。 总之,使用TexturePacker图集是提高游戏或应用程序性能和加载速度的好方法。虽然分后的图集需要一些额外的代码来加载和管理,但这可以保证你的应用程序在运行时更有效率并降低内存占用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值