2013-04-07 33 views
13

Pythonを使用してSVGファイルを解析して、座標/パスを抽出したいと考えています(これは「パス」IDの下に表示されています(具体的にはd = "..." />)。このデータは最終的に2軸CNCの駆動に使用されます。Python SVGパーサー

このようなパスの文字列を返すことができるライブラリをSOとGoogleで検索しました。これをさらに解析することはできますが、役に立たなくなりました。そのようなライブラリは存在しますか?トランスフォームを無視

答えて

18

、あなたはそうのようなSVGからパス文字列を抽出することができます:D-文字列を取得する

from xml.dom import minidom 

doc = minidom.parse(svg_file) # parseString also exists 
path_strings = [path.getAttribute('d') for path 
       in doc.getElementsByTagName('path')] 
doc.unlink() 
+1

あなたは変換が重要な場合のための任意の提案を持っています...そして、D-文字列をプリントアウトするには? – Veech

+0

@Veech:変換がある場合は、おそらく重要です。残念ながら、それらを処理するにはもっと多くのコードが必要です。 – icktoofay

+1

ええ、私はそれを実現するようになった。私は[cjlanoのsvg repo](https://github.com/cjlano/svg)が(いくつかの変更を加えて)十分に良いことを発見しました。 – Veech

4

svgpathtoolsを使用して行または2で行うことができます。パス

from svgpathtools import svg2paths 
paths, attributes = svg2paths('some_svg_file.svg') 

は(ちょうどカーブ情報、ない色、スタイルなどを含む)svgpathtoolsパスオブジェクトのリストです。 属性は、各パスの属性を格納する対応する辞書オブジェクトのリストです。

は、たとえば、

for k, v in enumerate(attributes): 
    print v['d'] # print d-string of k-th path in SVG 
関連する問題