Unity3D NGUI图集切成图片
有的时候用NGUI做好了图集,那么原图就没有必要放到Unity3D中了,严重影响Unity3D的速度。但是突然右想把图片弄出来。当然NGUI是提供了图集中单个图片另存,但是如果图片太多,比较费时间,所以用python写了个切图片的工具代码如下:
Python环境:2.7 测试通过,需要依赖Image库
NGUI版本:3.7
#coding:utf-8
#unity 图集裁剪成png
#Author:Wiker Yong
#Date:2015-07-08
import os
import sys
import argparse
import Image
def middle(str=‘‘,left=‘‘,right=‘‘):
# print str.index(right,str.index(left)+1)
return str[str.index(left)+len(left):str.find(right,str.find(left)+1)]
parser = argparse.ArgumentParser(description=‘Unity Atlas cut to pngs‘)
parser.add_argument("-f",dest=‘file‘,help=‘cut prefab,no ext name‘)
parser.add_argument("-p",dest=‘path‘,help=‘Output path‘)
args = parser.parse_args()
out_path=‘‘
if args.path != None and not os.path.exists(args.path):
os.makedirs(args.path)
out_path = args.path
if args.file == None:
parser.print_help()
sys.exit(0)
prefab_path = args.filepng
prefab_file = open(prefab_path+‘.prefab‘)
pngname=‘‘
x=0
y=0
w=0
h=0
while 1:
line= prefab_file.readline()
if not line:
break;
if line.startswith(‘ - name: ‘):
pngname=middle(line,‘ - name: ‘,‘\r\n‘)
if line.startswith(‘ x: ‘):
x=int(middle(line,‘ x: ‘,‘\r\n‘))
if line.startswith(‘ y: ‘):
y=int(middle(line,‘ y: ‘,‘\r\n‘))
if line.startswith(‘ width: ‘):
w=int(middle(line,‘ width: ‘,‘\r\n‘))
if line.startswith(‘ height: ‘):
h=int(middle(line,‘ height: ‘,‘\r\n‘))
print pngname,x,y,w,h
img = Image.open(prefab_path+‘.png‘)
region = (x,y,w+x,h+y)
cropimg=img.crop(region)
cropimg.save(out_path+‘/‘+pngname+‘.png‘)
后续再整个Unity反编译,还原成图片了,敬请关注!
版权声明:本文为博主原创文章,未经博主允许不得转载。
时间: 2024-09-30 15:17:08