資源簡介
分解Cocos的&Plist資源,Egret跟Laya的&Json資源。一鍵點擊即可完成了操作。
代碼片段和文件信息
#!/usr/bin/python?
#?coding:?UTF-8
import?ossys????
import?logging
from?xml.etree?import?ElementTree????
from?PIL?import?Image????
import?json????
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?kv?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?(0000))
????????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)
?
評論
共有 條評論