Unity3D NGUI图集切成图片

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反编译,还原成图片了,敬请关注!

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

猫大叔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值