- #!/usr/bin/env python
- # _*_ coding: utf-8 _*_
- import os,sys
- from gimpfu import *
- from gimpenums import *
- from xml.etree.ElementTree import ElementTree
- from xml.etree.ElementTree import Element
- from xml.etree.ElementTree import SubElement
- from xml.etree.ElementTree import dump
- from xml.etree.ElementTree import Comment
- from 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_name
- def 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://www.codesnippet.cn/detail/080720134484.html
来源: http://www.codesnippet.cn/detail/080720134484.html