0

我在这个 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 )
4

1 回答 1

0

原来,前缀

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

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

于 2013-02-06T20:09:20.547 回答