1、准备
1、安装 TexturePacker
2、安装python
3、安装Pillow-2.1.0.win-amd64-py2.7.exe 其他下载https://pypi.python.org/simple/pillow/
2、PVR转PNG.bat的使用
把 xx.plist和xx.pvr.ccz 文件放在工具目录下,直接双击“PVR转PNG.bat”
批处理文件,如果成功的话,在当前目录下就会生成相应的.png文件,这个批处理
可同时转化很多对(xx.plist和xx.pvr.ccz)文件,当然,也有可能失败,
如果失败,我们可以使用另一种方式转化,直接使用TexturePacker工具。
3、使用TexturePacker工具把xx.plist和xx.pvr.ccz转化为.png
1. TexturePacker中有个PVR Viewer工具,我们可以直接使用这个工具
进行转化。
2. 使用PVR Viewer工具打开我们要转化的文件,然后点击File下的Save As,
保存为.png文件即可,保存时把文件的后缀名添加上.png即可。
4、使用split.py脚本 - 将Texture Packer制作的.pvr.ccz和.plist文件还原为多个原图
1. split.py脚本只能通过.png和.plist文件还原,而不能直接通过.pvr.ccz和.plist文件,
所以需要根据2和3中的方法把xx.plist和xx.pvr.ccz转化为.png
2. 在Dos命令行模式下,进入脚本存放目录,同时需要把.png和.plist文件也放在这个
目录下,而且要确保.png和.plist文件的文件名相同(例:mm.png和mm.plist),
然后执行split.py脚本,传入参数(例:上面的mm),然后执行即可。
3. 当然也有可能不成功,因为split.py脚本是通过分析.plist文件,然后对
参考: http://www.haodaima.net/art/2682730
1、安装 TexturePacker
2、安装python
3、安装Pillow-2.1.0.win-amd64-py2.7.exe 其他下载https://pypi.python.org/simple/pillow/
2、PVR转PNG.bat的使用
把 xx.plist和xx.pvr.ccz 文件放在工具目录下,直接双击“PVR转PNG.bat”
批处理文件,如果成功的话,在当前目录下就会生成相应的.png文件,这个批处理
可同时转化很多对(xx.plist和xx.pvr.ccz)文件,当然,也有可能失败,
如果失败,我们可以使用另一种方式转化,直接使用TexturePacker工具。
3、使用TexturePacker工具把xx.plist和xx.pvr.ccz转化为.png
1. TexturePacker中有个PVR Viewer工具,我们可以直接使用这个工具
进行转化。
2. 使用PVR Viewer工具打开我们要转化的文件,然后点击File下的Save As,
保存为.png文件即可,保存时把文件的后缀名添加上.png即可。
4、使用split.py脚本 - 将Texture Packer制作的.pvr.ccz和.plist文件还原为多个原图
1. split.py脚本只能通过.png和.plist文件还原,而不能直接通过.pvr.ccz和.plist文件,
所以需要根据2和3中的方法把xx.plist和xx.pvr.ccz转化为.png
2. 在Dos命令行模式下,进入脚本存放目录,同时需要把.png和.plist文件也放在这个
目录下,而且要确保.png和.plist文件的文件名相同(例:mm.png和mm.plist),
然后执行split.py脚本,传入参数(例:上面的mm),然后执行即可。
3. 当然也有可能不成功,因为split.py脚本是通过分析.plist文件,然后对
.png文件进行切割,保存,如果失败,可以检查一下.plist文件是否正确。
split.py脚本
把所有需要转化的.pvr.ccz和.plist文件放到和脚本相同目录下,点击脚本运行即可。
- #!python
- import os,sys
- from xml.etree import ElementTree
- from PIL import Image
- def endWith(s,*endstring):
- array = map(s.endswith,endstring)
- if True in array:
- return True
- else:
- return False
- # Get the all files & directories in the specified directory (path).
- def get_recursive_file_list(path):
- current_files = os.listdir(path)
- all_files = []
- for file_name in current_files:
- full_file_name = os.path.join(path, file_name)
- if endWith(full_file_name,'.plist'):
- full_file_name = full_file_name.replace('.plist','')
- all_files.append(full_file_name)
- if os.path.isdir(full_file_name):
- next_level_files = get_recursive_file_list(full_file_name)
- all_files.extend(next_level_files)
- return all_files
- 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_', '')
- #outfile = outfile + '.png'
- print outfile, "generated"
- result_image.save(outfile)
- if __name__ == '__main__':
- currtenPath = os.getcwd()
- allPlistArray = get_recursive_file_list(currtenPath)
- for plist in allPlistArray:
- filename = plist
- 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"
参考: http://www.haodaima.net/art/2682730
原文出处:http://blog.csdn.net/tianxiawuzhei/article/details/44923703