• 大小: 821KB
    文件类型: .zip
    金币: 2
    下载: 1 次
    发布日期: 2021-05-10
  • 语言: 其他
  • 标签: python  图集裁剪  

资源简介

读取json文件切割图集,支持按目录批量裁剪,保留命名

资源截图

代码片段和文件信息

# -*- coding: utf-8 -*-

import ossys
import json
import os
import os.path
from PIL import Image

def json_to_dict(json_filename):
    json_file = open(json_filename ‘r‘)
    all_pic_dic = json.load(json_file)
    all_item_list = []
    for one_pic_item in all_pic_dic[‘res‘]:
        one_json_item = all_pic_dic[‘res‘][one_pic_item]
        one_item = {}
        one_item[‘name‘] = one_pic_item.strip().lstrip().rstrip(‘‘)
        one_item[‘x‘] = one_json_item[‘x‘]
        one_item[‘y‘] = one_json_item[‘y‘]
        one_item[‘w‘] = one_json_item[‘w‘]
        one_item[‘h‘] = one_json_item[‘h‘]
        all_item_list.append(one_item)

    return all_item_list
       
   

def gen_png_from_json(folder_name json_filename png_filename):
    big_image = Image.open(png_filename)
    all_item_list = json_to_dict(json_filename)

    print ‘gen_png_from_json:‘ + folder_name

    #清理掉原目录
    if not os.path.isdir(folder_name):
        #os.removedirs(folder_name)
        os.mkdir(folder_name)

    for i one_item_data in enumerate(all_item_list):
        file_name = one_item_data[‘name‘]
        x = one_item_data[‘x‘]
        y = one_item_data[‘y‘]
        w = one_item_data[‘w‘]
        h = one_item_data[‘h‘]

        #设置图像裁剪区域 (x左上,y左上,x右下y右下)
        image_box = [x y x + w  y + h ]
        one_pic = big_image.crop(image_box)

        one_pic.save(folder_name + “/“ + file_name + ‘.png‘) # 存储裁剪得到的图像
        
        #print one_item_data

if __name__ == ‘__main__‘:

    rootdir = sys.argv[1]
    #‘E:/_github/Python/TexturePacker‘

    file_name_set = set()
    if os.path.exists(rootdir):
        list_file = os.listdir(rootdir)
        for i in range(0len(list_file)):
            one_file_name = list_file[i]
            path = os.path.join(rootdir one_file_name)
            if os.path.isfile(path):
                file_name_set.add(os.path.splitext(one_file_name)[0])

    for file_name in file_name_set:
        json_filename = os.path.join(rootdir file_name) + ‘.json‘
        png_filename = os.path.join(rootdir file_name) + ‘.png‘
        jpg_filename = os.path.join(rootdir file_name) + ‘.jpg‘
    
        if os.path.exists(json_filename):
            if os.path.exists(png_filename):
                try:
                    gen_png_from_json(os.path.join(rootdir file_name) json_filename png_filename )
                except Exception:
                    print ‘!!!!!!!!!!!!!!!!!!!!‘ + json_filename + ‘ json error !!!!!!!!!!!!!!!!!!!!!‘
            elif os.path.exists(jpg_filename):
                try:
                    gen_png_from_json(os.path.join(rootdir file_name) json_filename jpg_filename )
                except Exception:
                    print ‘!!!!!!!!!!!!!!!!!!!!‘ + json_filename + ‘ json error !!!!!!!!!!!!!!!!!!!!!‘
                

   

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件          39  2018-09-20 21:17  UnpackSpriteSheetByJson\_run.bat
     文件        2955  2018-09-20 21:17  UnpackSpriteSheetByJson\_unpack_json.py
     目录           0  2018-09-20 22:33  UnpackSpriteSheetByJson\python\
     文件      837844  2018-09-20 21:17  UnpackSpriteSheetByJson\python\PIL-1.1.7.win32-py2.7.exe
     文件        2292  2018-09-20 21:17  UnpackSpriteSheetByJson\stand_8.json
     文件       38807  2018-09-20 21:17  UnpackSpriteSheetByJson\stand_8.png
     目录           0  2018-09-20 22:33  UnpackSpriteSheetByJson\stand_8\
     文件        6741  2018-09-20 21:17  UnpackSpriteSheetByJson\stand_8\stand80001.png
     文件        6840  2018-09-20 21:17  UnpackSpriteSheetByJson\stand_8\stand80002.png
     文件        6911  2018-09-20 21:17  UnpackSpriteSheetByJson\stand_8\stand80003.png
     文件        6882  2018-09-20 21:17  UnpackSpriteSheetByJson\stand_8\stand80004.png
     文件        6885  2018-09-20 21:17  UnpackSpriteSheetByJson\stand_8\stand80005.png
     文件        6839  2018-09-20 21:17  UnpackSpriteSheetByJson\stand_8\stand80006.png
     文件        6735  2018-09-20 21:17  UnpackSpriteSheetByJson\stand_8\stand80007.png
     文件        6680  2018-09-20 21:17  UnpackSpriteSheetByJson\stand_8\stand80008.png

评论

共有 条评论