2013-02-06 51 views
0

我在这个svg中嵌入了两个图像,但图像没有显示出来。我做了什么错?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

原来出的前缀

g_element.attrib[SVG('width')] = str(width) 

在width属性中不是必需的(属性本身是)。所述前缀导致Inkscape在后处理步骤中从文档剥离属性。