• cocos2dx 游戏plist与png完美切成小图python代码


      首先需要一份python的切图程序:

      1 #python2.5 unpack_plist.py birdfly 
      2 
      3 
      4 #! /usr/lical/bin/python
      5 import os,sys
      6 from xml.etree import ElementTree
      7 from PIL import Image 
      8 
      9 def tree_to_dict(tree):
     10     d = {}
     11     for index, item in enumerate(tree):
     12         if item.tag == 'key':
     13             if tree[index+1].tag == 'string':
     14                 d[item.text] = tree[index + 1].text
     15             elif tree[index + 1].tag == 'true':
     16                 d[item.text] = True
     17             elif tree[index + 1].tag == 'false':
     18                 d[item.text] = False
     19             elif tree[index+1].tag == 'dict':
     20                 d[item.text] = tree_to_dict(tree[index+1])
     21     return d
     22 
     23 def gen_png_from_plist(plist_filename, png_filename):
     24     file_path = plist_filename.replace('.plist', '')
     25     big_image = Image.open(png_filename)
     26     root = ElementTree.fromstring(open(plist_filename, 'r').read())
     27     plist_dict = tree_to_dict(root[0])
     28     to_list = lambda x: x.replace('{','').replace('}','').split(',')
     29     for k,v in plist_dict['frames'].items():
     30         print "-----start
    ----------"
     31         rectlist = to_list(v['frame'])
     32         print rectlist, "--------rectlist"
     33         width = int( rectlist[3] if v['rotated'] else rectlist[2] )
     34         height = int( rectlist[2] if v['rotated'] else rectlist[3] )
     35         print width,height,"----width,height"
     36         box=( 
     37             int(rectlist[0]),
     38             int(rectlist[1]),
     39             int(rectlist[0]) + width,
     40             int(rectlist[1]) + height,
     41             )
     42         # bos is start & end point
     43         print box,"-----_box-"
     44         print v['rotated'], "---rotated"
     45 
     46         sizelist = [ int(x) for x in to_list(v['sourceSize'])]
     47         rect_on_big = big_image.crop(box)
     48         '''
     49         result_image = Image.new('RGBA', sizelist, (0,0,0,0))
     50         result_box=(
     51             ( sizelist[0] - width )/2,
     52             ( sizelist[1] - height )/2,
     53             ( sizelist[0] + width )/2,
     54             ( sizelist[1] + height )/2
     55             )
     56         result_image.paste(rect_on_big, result_box, mask=0)
     57         if v['rotated']:
     58             result_image = result_image.rotate(90)
     59         if not os.path.isdir(file_path):
     60             os.mkdir(file_path)
     61         outfile = (file_path+'/' + k).replace('gift_', '')
     62         print result_box,"-----result_box-"
     63         print outfile, "generated"
     64         # result_image.save(outfile)
     65         '''
     66 
     67         if v['rotated']:
     68             # rect_on_big = rect_on_big.rotate(90) 
     69             rect_on_big = rect_on_big.transpose(Image.ROTATE_90)
     70   
     71         # result_image = Image.new('RGBA', sizelist, (0,0,0,0))  
     72         # if v['rotated']:  
     73         #     result_box=(  
     74         #         ( sizelist[0] - height )/2,  
     75         #         ( sizelist[1] - width )/2,  
     76         #         ( sizelist[0] + height )/2,  
     77         #         ( sizelist[1] + width )/2  
     78         #         )  
     79         # else:  
     80         #     result_box=(  
     81         #         ( sizelist[0] - width )/2,  
     82         #         ( sizelist[1] - height )/2,  
     83         #         ( sizelist[0] + width )/2,  
     84         #         ( sizelist[1] + height )/2  
     85         #         )  
     86         # result_image.paste(rect_on_big, result_box, mask=0)      
     87 
     88         if not os.path.isdir(file_path):
     89             os.mkdir(file_path)
     90         outfile = (file_path+'/' + k).replace('gift_', '')
     91         rect_on_big.save(outfile);
     92 
     93 if __name__ == '__main__':
     94     filename = sys.argv[1]
     95     plist_filename = filename + '.plist'
     96     png_filename = filename + '.png'
     97 if (os.path.exists(plist_filename) and os.path.exists(png_filename)):
     98     gen_png_from_plist( plist_filename, png_filename )
     99 else:
    100     print "make sure you have boith plist and png files in the same directory"

    Mac 电脑下可以新建一个文本把程序复制进去,保存后缀名为 .py 并移至与需要切的plist与png文件夹下。

  • 相关阅读:
    设计模式之《工厂方法》
    设计模式之 《简单工厂》
    fegin 调用源码分析
    ajax上传预览
    ajax小应用
    ajax执行流程1
    ajax异步post方法
    ajax get异步方法
    js ajax请求流程
    form表单提交
  • 原文地址:https://www.cnblogs.com/luorende/p/6702075.html
Copyright © 2020-2023  润新知