go言語 ライブラリ「svgo」を使用してSVGを描画する

  • 作成日 2020.03.17
  • 更新日 2022.11.05
  • go
go言語 ライブラリ「svgo」を使用してSVGを描画する

go言語のライブラリである「svgo」を使用するとSVGの描画が簡単にできます。ここでは、 svgoの利用手順と簡単な使い方を記述します。

環境

  • OS  windows10 pro
  • go 1.13.8

svgoインストール

下記のコマンドでインストールします。

go get github.com/ajstarks/svgo

svgo使い方

円を描画してみます。

test.goというファイル名で、下記の通りに編集します。

package main

import (
	"log"
	"net/http"

	svg "github.com/ajstarks/svgo"
)

func main() {
	http.Handle("/svg", http.HandlerFunc(circle))
	err := http.ListenAndServe(":82", nil)
	if err != nil {
		log.Fatal("ListenAndServe:", err)
	}
}

func circle(w http.ResponseWriter, req *http.Request) {
	w.Header().Set("Content-Type", "image/svg+xml")
	s := svg.New(w)
	s.Start(800, 800)
	s.Circle(300, 300, 125, "fill:none;stroke:#3ab60b")
	s.End()
}

実行します。

go run test.go

ブラウザからhttp://localhost:82/svgにアクセスすると、円が描画されていることが確認できます。

次にテキストを描画してみます。test.goを下記のコードに変更します。

package main

import (
	"log"
	"net/http"

	svg "github.com/ajstarks/svgo"
)

func main() {
	http.Handle("/svg", http.HandlerFunc(circle))
	err := http.ListenAndServe(":82", nil)
	if err != nil {
		log.Fatal("ListenAndServe:", err)
	}
}

func circle(w http.ResponseWriter, req *http.Request) {
	w.Header().Set("Content-Type", "image/svg+xml")
	s := svg.New(w)
	s.Start(500, 500)
	s.Text(250, 250, "Hello", "fill:none;stroke:#3ab60b;font-size:100")
	s.End()
}

実行します。

go run test.go

ブラウザからhttp://localhost:82/svgにアクセスすると、テキストが描画されていることが確認できます。