【问题标题】:data URI and Graphviz数据 URI 和 Graphviz
【发布时间】:2011-12-15 09:48:42
【问题描述】:

是否可以使用 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 中没有图像。

你知道如何解决这个问题吗?

谢谢!

【问题讨论】:

    标签: svg graphviz data-uri


    【解决方案1】:

    您可能必须修改 graphviz 的源代码才能读取/写入数据 uri。大概它需要加载图像来获取尺寸。

    另一种选择是不在点文件中使用数据 uri,而是对生成的 svg 进行后处理(如果您想要的是一个独立的 svg 文件)。 SVG Scour 可能是轻松做到这一点的一种方法。 Inkscape 可能也可以为你做到这一点。

    【讨论】:

    • 是的,我已经检查了 d graphviz 源并且确实需要图像的尺寸。我想我得另谋出路了。不能使用 Inkscase,因为图像是在 Web 应用程序中动态创建的,我宁愿不使用嵌入在 svg 中的临时图像文件路径。还是谢谢!
    • 刚刚提交了新功能请求
    • @giorgioca 对您的功能请求有什么帮助吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-03-26
    • 2010-12-09
    • 1970-01-01
    • 1970-01-01
    • 2023-04-02
    • 2019-04-20
    • 2015-01-24
    相关资源
    最近更新 更多