資源簡介
讀取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‘]
????????#設(shè)置圖像裁剪區(qū)域?(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
- 上一篇:PLC控制柜方案
- 下一篇:國網(wǎng)單相智能電表設(shè)計
評論
共有 條評論