数据URI和Graphviz

时间:2011-12-15 09:48:42

标签: svg graphviz data-uri

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

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 个答案:

答案 0 :(得分:1)

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

另一种选择是不在点文件中使用数据uris,而是对生成的svg进行后处理(如果你想要的是一个自包含的svg文件)。 SVG Scour可能是轻松实现这一目标的一种方式。 Inkscape也可以为你做这件事。