summaryrefslogtreecommitdiffstats
path: root/share/extensions/embedimage.py
diff options
context:
space:
mode:
authorMenTaLguY <mental@rydia.net>2006-01-16 02:36:01 +0000
committermental <mental@users.sourceforge.net>2006-01-16 02:36:01 +0000
commit179fa413b047bede6e32109e2ce82437c5fb8d34 (patch)
treea5a6ac2c1708bd02288fbd8edb2ff500ff2e0916 /share/extensions/embedimage.py
downloadinkscape-179fa413b047bede6e32109e2ce82437c5fb8d34.tar.gz
inkscape-179fa413b047bede6e32109e2ce82437c5fb8d34.zip
moving trunk for module inkscape
(bzr r1)
Diffstat (limited to 'share/extensions/embedimage.py')
-rw-r--r--share/extensions/embedimage.py60
1 files changed, 60 insertions, 0 deletions
diff --git a/share/extensions/embedimage.py b/share/extensions/embedimage.py
new file mode 100644
index 000000000..12a0b78b2
--- /dev/null
+++ b/share/extensions/embedimage.py
@@ -0,0 +1,60 @@
+#!/usr/bin/env python
+'''
+Copyright (C) 2005 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
+'''
+
+import inkex, os, base64
+
+class MyEffect(inkex.Effect):
+ def __init__(self):
+ inkex.Effect.__init__(self)
+
+ def effect(self):
+ ctx = inkex.xml.xpath.Context.Context(self.document,processorNss=inkex.NSS)
+
+ # if there is a selection only embed selected images
+ # otherwise embed all images
+ if (self.options.ids):
+ for id, node in self.selected.iteritems():
+ if node.tagName == 'image':
+ self.embedImage(node)
+ else:
+ path = '//image'
+ for node in inkex.xml.xpath.Evaluate(path,self.document, context=ctx):
+ self.embedImage(node)
+ def embedImage(self, node):
+ xlink = node.attributes.getNamedItemNS(inkex.NSS[u'xlink'],'href')
+ if (xlink.value[:4]!='data'):
+ absref=node.attributes.getNamedItemNS(inkex.NSS[u'sodipodi'],'absref')
+ if (os.path.isfile(absref.value)):
+ file = open(absref.value,"rb").read()
+ embed=True
+ if (file[:4]=='\x89PNG'):
+ type='image/png'
+ elif (file[:2]=='\xff\xd8'):
+ type='image/jpg'
+ else:
+ embed=False
+ if (embed):
+ xlink.value = 'data:%s;base64,%s' % (type, base64.encodestring(file))
+ node.removeAttributeNS(inkex.NSS[u'sodipodi'],'absref')
+ else:
+ inkex.debug("%s is not of type image/png or image/jpg" % absref.value)
+ else:
+ inkex.debug("Sorry we could not locate %s" % absref.value)
+e = MyEffect()
+e.affect()