2011-12-15 6 views
0

Graphviz [image]タグを使用してデータURI文字列を埋め込むことはできますか? すなわちdata 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を使用せず、結果として得られるsvgを後処理することです(必要なものが自己完結型のsvgファイルだった場合)。 SVG Scourこれを簡単に行う方法の1つになるかもしれません。 Inkscapeもおそらくこれを行うことができます。

+0

私はd graphvizのソースを確認しましたが、実際には画像の寸法が必要です。私は別の方法を見つけなければならないと思う。 Inkscaseを使用することはできません。イメージはWebappで即座に作成されるため、svgに埋め込まれた一時イメージファイルパスを使用しないでください。とにかくありがとう! – giorgioca

+0

新しい機能リクエストを送信しました – giorgioca

関連する問題