XML导出器,xml导出,一个GIMP插件,为当前


一个GIMP插件,为当前image的每一个图层保存成一个单独的文件,并且每个图层可以让用户输入一个自定义属性值,然后导出成为一个xml文件

#!/usr/bin/env python# _*_ coding: utf-8 _*_import os,sysfrom gimpfu import *from gimpenums import *from xml.etree.ElementTree import ElementTreefrom xml.etree.ElementTree import Elementfrom xml.etree.ElementTree import SubElementfrom xml.etree.ElementTree import dumpfrom xml.etree.ElementTree import Commentfrom xml.etree.ElementTree import tostring#创建xml对象book = ElementTree()#创建根节点my_root = Element('root')book._setroot(my_root)#定义添加节点函数def addElement(element,img):    #只能在这里获取原图的名字了    #分离layer_name和component_name    layer_name,component_name = splitName(element)    component_name = str(component_name).split("'")[0]    layer_name = str(layer_name).split("'")[1] + ".jpg"    item = Element('mask',{'componentName':component_name,'diffuseName':str(img),'name':layer_name})    #添加到根节点下    my_root.append(item)#获取原图名字def getImageName(image):    lay = image.layers    for i in lay:        if i.visible:            return str(i.name)#输出message函数def gprint(msg):    pdb.gimp_message(msg)    return#美化xml文件函数def indent(elem, level=0):    i = "\\n" + level*"  "    if len(elem):        if not elem.text or not elem.text.strip():            elem.text = i + "  "        for e in elem:            indent(e, level+1)        if not e.tail or not e.tail.strip():            e.tail = i    if level and (not elem.tail or not elem.tail.strip()):        elem.tail = i    return elem#获取layer列表def getImage(image):    img = gimp.image_list()[0]    layer = img.layers    return layer#分离layer_name和component_namedef splitName(layerName):    return str(layerName).split('$')#判断layer_name是否含有'$'符号def     judgeName(layer_name):    if str(layer_name).find('$') == -1:        return False    else:        return True#保存所有图层为jpg文件def save_all_layers(image,fileName,filePath):    for layer in image.layers:        #如果这个是图层而不是原图        if judgeName(layer.name):            #获得图层名:mask1.jpg            layer_name = splitName(layer.name)[0] + '.jpg'            #获取保存路径            save_layer_path = filePath + os.sep + layer_name            pdb.gimp_file_save(image,layer,save_layer_path,layer_name)#导出函数def export_file(image,drawable,fileName,filePath):    save_all_layers(image,fileName,filePath)    layer_list= getImage(image)    img = getImageName(image)    #循环整个layer_list()    for l in layer_list:        #如果名字含有'$',也就是非原图:        if judgeName(l):            #调用添加节点函数            addElement(l,img)        else:            mask_name = l.name             gprint(mask_name)    #美化xml文件,并写入    dump(indent(my_root))    target_file = filePath + os.sep + fileName    book.write(target_file,'utf-8')#注册函数    register(    "export-file",    "export-file-title",    "export file",    "MingL_Wang",    "Glue",    "2012",    "<Image>/MyScripts/exportFile",    "*",    [     (PF_STRING, "file_name", "FileName ", "layout.xml"),      (PF_DIRNAME, "file_path", "FilePath ", None)    ],    [],    export_file )main()#该片段来自于http://byrx.net

评论关闭