From 4da9848315717d0f017f9b157764cb57d315fee1 Mon Sep 17 00:00:00 2001 From: gemy_c Date: Fri, 3 Nov 2006 23:24:15 +0000 Subject: [PATCH] a script to export any groups as independant png file --- share/extensions/G2Pngs.inx | 22 ++++++++++ share/extensions/G2Pngs.py | 80 +++++++++++++++++++++++++++++++++++++ 2 files changed, 102 insertions(+) create mode 100644 share/extensions/G2Pngs.inx create mode 100644 share/extensions/G2Pngs.py diff --git a/share/extensions/G2Pngs.inx b/share/extensions/G2Pngs.inx new file mode 100644 index 000000000..cd81bea16 --- /dev/null +++ b/share/extensions/G2Pngs.inx @@ -0,0 +1,22 @@ + + <_name>Groups to Pngs + org.ekips.filter.G2Pngs + org.inkscape.output.svg.inkscape + G2Pngs.py + inkex.py + /home/ + + + .png + application/x-png + <_filetypename>Export each group to a png + <_filetypetooltip>Export each group to a png + TRUE + + + + + + diff --git a/share/extensions/G2Pngs.py b/share/extensions/G2Pngs.py new file mode 100644 index 000000000..8c4c5d973 --- /dev/null +++ b/share/extensions/G2Pngs.py @@ -0,0 +1,80 @@ +#!/usr/bin/env python +''' +Copyright (C) 2006 Aaron Spike, aaron@ekips.org + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +TODO : +specify save format, scale, and if it is a layer or g export + +RELEASE NOTE +- accepte l'export des calques +- dossier par défaut = dossier utilisateur +- crée le dossier spécifié s'il n'existe pas + +''' +import inkex +import sys, os, tempfile + +class MyEffect(inkex.Effect): + def __init__(self): + inkex.Effect.__init__(self) + self.OptionParser.add_option("-d", "--directory", + action="store", type="string", + dest="directory", default=os.path.expanduser("~"), + help="Existing destination directory") + self.OptionParser.add_option("-l", "--layers", + action="store", type="inkbool", + dest="layers", default=False, + help="Save layers with their groups") + '''self.OptionParser.add_option("-s", "--scale", + action="store", type="float", + dest="scale", default=100, + help="Scales the group at the specified value") + self.OptionParser.add_option("-f", "--format", + action="store", type="string", + dest="format", default="png", + help="Save at the specified format [only PNG implemented yet]") + ''' + def output(self): + pass + + def effect(self): + svg_file = self.args[-1] + node = inkex.xml.xpath.Evaluate('/svg',self.document)[0] + '''docname = node.attributes.getNamedItemNS(inkex.NSS[u'sodipodi'],'docname').value[:-4]''' + + #create os temp dir + '''tmp_dir = tempfile.mkdtemp()''' + directory = self.options.directory + """area = '--export-area-canvas'""" + pngs = [] + if self.options.layers: + path = "/svg/*[name()='g' or @style][@id]" + else: + path = "/svg/g/*[name()='g' or @style][@id]" + + for node in inkex.xml.xpath.Evaluate(path,self.document): + id = node.attributes.getNamedItem('id').value + name = "%s.png" % id + filename = os.path.join(directory, name) + command = "inkscape -i %s -e %s %s " % (id, filename, svg_file) + f = os.popen(command,'r') + f.read() + f.close() + pngs.append(filename) + +e = MyEffect() +e.affect() \ No newline at end of file -- 2.30.2