summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorC??dric Gemy <cedric@le-radar.com>2006-11-03 23:24:15 +0000
committergemy_c <gemy_c@users.sourceforge.net>2006-11-03 23:24:15 +0000
commit204d4e65e0611a8ab6b8c435d6359b52e38613ed (patch)
tree493291944ea211d79a9a2c7afb1f22fed9728964
parentpatch 1590039, whitespace (diff)
downloadinkscape-204d4e65e0611a8ab6b8c435d6359b52e38613ed.tar.gz
inkscape-204d4e65e0611a8ab6b8c435d6359b52e38613ed.zip
a script to export any groups as independant png file
(bzr r1892)
-rw-r--r--share/extensions/G2Pngs.inx22
-rw-r--r--share/extensions/G2Pngs.py80
2 files changed, 102 insertions, 0 deletions
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 @@
+<inkscape-extension>
+ <_name>Groups to Pngs</_name>
+ <id>org.ekips.filter.G2Pngs</id>
+ <dependency type="extension">org.inkscape.output.svg.inkscape</dependency>
+ <dependency type="executable" location="extensions">G2Pngs.py</dependency>
+ <dependency type="executable" location="extensions">inkex.py</dependency>
+ <param name="directory" type="string" _gui-text="Directory">/home/</param>
+ <param name="layers" type="boolean" _gui-text="Save layers only"></param>
+ <effect>
+ <extension>.png</extension>
+ <mimetype>application/x-png</mimetype>
+ <_filetypename>Export each group to a png</_filetypename>
+ <_filetypetooltip>Export each group to a png</_filetypetooltip>
+ <dataloss>TRUE</dataloss>
+ <effects-menu>
+ <submenu _name="Recursive actions"/>
+ </effects-menu>
+ </effect>
+ <script>
+ <command reldir="extensions" interpreter="python">G2Pngs.py</command>
+ </script>
+</inkscape-extension>
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