使うライブラリ

 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ファイルの読み込み

 多分ない模様。ほしい人はフルスクラッチしてもいいかも。

広告

関連コンテンツと広告

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA