X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=share%2Fextensions%2Fextractimage.py;h=38f9298465d66191fd3eb9718dd08fb5f8a0c21c;hb=25efa04a2042b95ec9c327d41aa2673a39b18104;hp=f1b0f6f7a246f2b1e8a29d1ff468690aa7c92bff;hpb=80809dee6f6d120234c4570056c9a10c063953d8;p=inkscape.git diff --git a/share/extensions/extractimage.py b/share/extensions/extractimage.py index f1b0f6f7a..38f929846 100644 --- a/share/extensions/extractimage.py +++ b/share/extensions/extractimage.py @@ -17,34 +17,58 @@ 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, base64 +import inkex, base64, os +import gettext +_ = gettext.gettext class MyEffect(inkex.Effect): def __init__(self): inkex.Effect.__init__(self) + self.OptionParser.add_option("--desc") self.OptionParser.add_option("--filepath", action="store", type="string", dest="filepath", default=None, help="") def effect(self): - ctx = inkex.xml.xpath.Context.Context(self.document,processorNss=inkex.NSS) + mimesubext={ + 'png' :'.png', + 'bmp' :'.bmp', + 'jpeg':'.jpg', + 'jpg' :'.jpg', #bogus mime + 'icon':'.ico', + 'gif' :'.gif' + } # exbed the first embedded image path = self.options.filepath if (path != ''): if (self.options.ids): for id, node in self.selected.iteritems(): - if node.tagName == 'image': - xlink = node.attributes.getNamedItemNS(inkex.NSS[u'xlink'],'href') - if (xlink.value[:4]=='data'): - comma = xlink.value.find(',') + if node.tag == inkex.addNS('image','svg'): + xlink = node.get(inkex.addNS('href','xlink')) + if (xlink[:4]=='data'): + comma = xlink.find(',') if comma>0: - data = base64.decodestring(xlink.value[comma:]) + #get extension + fileext='' + semicolon = xlink.find(';') + if semicolon>0: + for sub in mimesubext.keys(): + if sub in xlink[5:semicolon]: + fileext=mimesubext[sub] + path=path+fileext; + break + #save + data = base64.decodestring(xlink[comma:]) open(path,'wb').write(data) - xlink.value = path + node.set(inkex.addNS('href','xlink'),os.path.realpath(path)) #absolute for making in-mem cycles work else: - inkex.debug('Difficulty finding the image data.') + inkex.errormsg(_('Difficulty finding the image data.')) break -e = MyEffect() -e.affect() +if __name__ == '__main__': + e = MyEffect() + e.affect() + + +# vim: expandtab shiftwidth=4 tabstop=8 softtabstop=4 encoding=utf-8 textwidth=99