SVG の作成と操作のためのオープンソースの Go ライブラリ
SVG 描画の生成をサポートする非常に安定した Go API 。図形、線、テキスト、画像、パスを追加し、色、グラデーション、アニメーションなどを適用できます。
SVGo は、ソフトウェア開発者が Scalable Vector Graphics 1.1 仕様を使用して独自のアプリ内で SVG を作成できるようにするオープン ソースの Go 言語ライブラリです。このライブラリは、円、楕円、多角形、四角形などの SVG 形状をサポートします。また、平行移動、回転、拡大縮小、傾斜などの SVG 変換機能もサポートします。
SVGo ライブラリは、Go 言語が利用可能な場所ならどこでも実行でき、Linux、Mac OS X、Windows などの一般的なオペレーティング システム間で完全に移植可能です。ライブラリには、形状、線、テキスト、描画パス、画像、およびグラデーション、画像変換、フィルター効果、アニメーションの適用、メタデータ要素など。
このライブラリは、さまざまな SVG 要素を最大限に活用する、調整された手作りのコードに近い、標準的でクリーンで読みやすいコードを生成するように設計されています。このライブラリは、標準偏差によるぼかし機能、画像へのグレースケール フィルター、色相の回転、画像の色の反転、セピア トーンの適用など、ユーザーの便宜のために組み込みフィルターのサポートを提供しています。
イメージング入門
SVGo をインストールする最も簡単で推奨される方法は、GitHub を使用することです。簡単でスムーズなインストールのために、次のコマンドを使用してください。
GitHub 経由で SVGo をインストールする
go get -u github.com/ajstarks/svgo
GO ライブラリ経由で SVG を生成する
オープン ソースの SVGo ライブラリを使用すると、ソフトウェア開発者は、Go コマンドを使用して独自のアプリケーション内で SVG 図面をプログラムで生成できます。開発者は、SVG キャンバスの幅と高さ、および SVG の宛先を定義する必要があります。開発者は、円、楕円、多角形などの形状を簡単に描画できるだけでなく、選択したテキストを簡単に入力することもできます。
SVG の作成 Gtによる画像
package main
import (
"github.com/ajstarks/svgo"
"os"
)
func main() {
width := 500
height := 500
canvas := svg.New(os.Stdout)
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")
canvas.End()
}
シェイプとパスの描画
SVGo ライブラリは、独自のアプリケーション内でさまざまな種類の形状を作成する機能を提供しています。円、楕円、多角形、長方形または角丸長方形、正方形、一連の線分などの描画をサポートしています。線やパスを簡単に描くこともできます。楕円弧、キュア、3 次ベジェ曲線、2 次ベジェ曲線などを描くことができます。
Gtでオンラインでサークルを描画
package main
import (
"log"
"github.com/ajstarks/svgo"
"net/http"
)
func main() {
http.Handle("/circle", http.HandlerFunc(circle))
err := http.ListenAndServe(":2003", 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.Circle(250, 250, 125, "fill:none;stroke:black")
s.End()
}
画像とテキストのサポート
オープン ソースの SVGo ライブラリは、Go コマンドを使用して SVG 図面を作成する際に、画像とテキストを挿入するための完全なサポートを提供しています。画像やテキストを配置するときは、配置する場所を指定する必要があり、画像の幅と高さを定義することもできます。複数行のテキストを挿入して、サイズ、塗りつぶし、配置、および間隔を定義することもできます。また、スタイル付きテキストをパスとともに配置することもサポートしています。 RGB スキームを使用して、選択した色を定義することもできます。
Gtアプリ内のSVGに画像とテキストを追加
import (
"os"
svg "github.com/ajstarks/svgo"
)
func main() {
width := 500
height := 500
canvas := svg.New(os.Stdout)
canvas.Start(width, height)
canvas.Circle(width/2, height/2, 100)
canvas.Gstyle("text-anchor:middle;font-family:sans;fill:white")
canvas.Textspan(width/2, height/2, "Hello ", "font-size:30px")
canvas.Span("SVG", "font-family:serif;font-size:50px;fill:yellow")
canvas.TextEnd()
canvas.Gend()
canvas.End()
}
SVG へのアニメーションの適用
SVG アニメーション要素は、World Wide Web Consortium (W3C) Synchronized Multimedia Working Group と共同で開発されました。 SVGo を使用すると、開発者は見事なアニメーションを作成し、単一のアニメーション SVG ファイルを簡単にエクスポートできます。このライブラリでは、 リンクによって参照されるアイテムのアニメーション化、指定されたパスに沿った参照オブジェクトのアニメーション化、並進変換のアニメーション化、回転変換のアニメーション化、スケールまたは SkewX 変換のアニメーション化などが可能です。
SVGにアニメーションを追加 Gtライブラリ
func main() {
width, height := 500, 500
rsize := 100
csize := rsize / 2
duration := 5.0
repeat := 5
imw, imh := 100, 144
canvas := svg.New(os.Stdout)
canvas.Start(width, height)
canvas.Circle(csize, csize, csize, `fill="red"`, `id="circle"`)
canvas.Image((width/2)-(imw/2), 0, imw, imh, "gopher.jpg", `id="gopher"`)
canvas.Square(width-rsize, 0, rsize, `fill="blue"`, `id="square"`)
canvas.Animate("#circle", "cx", 0, width, duration, repeat)
canvas.Animate("#circle", "cy", 0, height, duration, repeat)
canvas.Animate("#square", "x", width, 0, duration, repeat)
canvas.Animate("#square", "y", height, 0, duration, repeat)
canvas.Animate("#gopher", "y", 0, height, duration, repeat)
canvas.End()
}