Code

a script to export any groups as independant png file
authorgemy_c <gemy_c@users.sourceforge.net>
Fri, 3 Nov 2006 23:24:15 +0000 (23:24 +0000)
committergemy_c <gemy_c@users.sourceforge.net>
Fri, 3 Nov 2006 23:24:15 +0000 (23:24 +0000)
share/extensions/G2Pngs.inx [new file with mode: 0644]
share/extensions/G2Pngs.py [new file with mode: 0644]

diff --git a/share/extensions/G2Pngs.inx b/share/extensions/G2Pngs.inx
new file mode 100644 (file)
index 0000000..cd81bea
--- /dev/null
@@ -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 (file)
index 0000000..8c4c5d9
--- /dev/null
@@ -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