我在这个svg中嵌入了两个图像,但图像没有显示出来。我做了什么错了?
http://dl.dropbox.com/u/5363697/whirl_browserready.svg
更多信息:
我使用以下代码进行图像嵌入,以防它有用:
xpath_expr = '//*[@{1}="{0}"]'.format(layername, INKSCAPE_XPATH('label') )
layer_el = svg_doc.xpath( xpath_expr,
namespaces = NE_NS_MAP
)[0]
obj_id = layer_el.attrib['id']
# Keep it safe somewhere, now export that little element as an image
output_el = tempfile.NamedTemporaryFile(
suffix='_temp.svg' )
cmd_line = [
'inkscape',
'--export-id=' + obj_id,
'--export-id-only',
'--export-area-drawing',
'--export-dpi=90', # Change here if required
'--export-png=' + output_el.name,
REL_SIMPLIFIED_LOCATION
]
subprocess.check_call( cmd_line )
# Now load back the file, as a 'buffer'
whole_file = output_el.read()
assert len( whole_file ) > 0
bf = base64.b64encode( whole_file )
# Change that 'g' element by an 'image' element
g_element = etree.Element(SVG('image') )
g_element.attrib[XLINK('href')] = "data:image/png;base64," + bf
(width, height) = get_object_size( obj_id )
print(width,height)
g_element.attrib[SVG('width')] = str( width )
g_element.attrib[SVG('height')] = str( height )
svg_doc.replace( layer_el, g_element )
答案 0 :(得分:0)
结果是前缀
g_element.attrib[SVG('width')] = str( width )
width属性中的不是必需的(属性本身是)。所述前缀导致Inkscape在后处理步骤中从文档中剥离属性。