2011-12-15 50 views
0

是否可以使用Graphviz [image]标记来嵌入数据URI字符串? 即数据URI和Graphviz

simple.dot:(应显示一个红点图像 - >节点B)

digraph G { 

rankdir="LR"; 
A -> B [label="test 1"]; 

A [image="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg=="]; 
B [label="foo"]; 

} 

dot simple.dot -o simple.svg -Tsvg 

这个运行是这样的错误我得到

Warning: No such file or directory while opening data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg== 
Warning: No or improper image="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==" for node "A" 

生成的图形在节点A中没有图像时显示。

你有什么想法如何解决这个问题?

谢谢!

回答

1

您可能需要修改graphviz的来源才能读取/写入数据uris。推测它需要加载图像来获取尺寸。

另一种选择是不使用点文件中的数据uris,而是后处理生成的svg(如果你想要的是一个自包含的svg文件)。 SVG Scour可能是一种简单的方法。 Inkscape可能也可以为你做这个。

+0

是的,我已经检查过d graphviz源码,并且确实需要图片的尺寸。我想我必须找到另一种方法。无法使用Inkscase,因为图像是在Web应用程序中实时创建的,我宁愿不使用嵌入在svg中的临时图像文件路径。不管怎么说,还是要谢谢你! – giorgioca

+0

刚刚提交了新的功能请求 – giorgioca