使うライブラリ
svgoというライブラリがあるので、それを使います。
後々ただ出力するだけなら普通に自分で書けばよくね?とも思いましたがそこはまあ、スルーというか、そんな感じで…と思ってたんですが、意外と出力だけなら便利でした。
でも、読み込みとか考えると、オブジェクト作成の練習も兼ねれそうなので、自分でスクラッチしようかなあ。自分で作成した場合はまた別の記事を書くと思います。
導入方法
svgoのページにあるreadmeのとおり、
go get github.com/ajstarks/svgo
go install github.com/ajstarks/svgo/…
で導入するだけです。
書き出し方
ライブラリを導入することでSVGを管理するオブジェクトsvgが導入される。
それに出入力ができるWriter(こちらは標準パッケージの多分出力に関するインタフェース的なアレ)を渡し、テキストやLineなどにそれぞれ対応するメソッドを実行すればWriterで指定された先にSVGのパスが描画される。
ただ、ぶっちゃけ多くを求めない場合、このパッケージ色々ありすぎの気も…。
サンプルコード
こんな感じで書き出せます。ほぼサンプルコードそのまま。
fileName := “tmp_test.svg”
file, err := os.OpenFile(fileName, os.O_RDWR|os.O_CREATE, 0666)
if err := nil{
panic(err)
}
bw := bufio.NewWriter(file)
canvas := svg.New(bw)
width := 500
height := 500
canvas.Start(width,height)
canvas.Circle(width/2, height/2, 100)
canvas.Text(width/2, height/2, “Hello, SVG”, “text-anchor:middle;font-size:30px;fill:white;”)
file.Close()
SvgをNewするときの引数にbufioのWriterを渡しておけば、バッファリングしつつ出力できます。
なおTextやCircleには第四引数を設定することができますが、これはsvgのstyle属性の内容の指定になるようです。
SVGファイルの読み込み
多分ない模様。ほしい人はフルスクラッチしてもいいかも。