ספריית Go קוד פתוח ליצירה ומניפולציה של SVG

Go API יציב מאוד התומך ביצירת שרטוטי SVG. אתה יכול להוסיף צורות, קווים, טקסט, תמונות, נתיבים ולהחיל צבע, מעברי צבע, אנימציות ועוד.  

SVGo היא ספריית שפת קוד פתוח של Go המאפשרת למפתחי תוכנה ליצור SVG בתוך האפליקציות שלהם באמצעות מפרט Scalable Vector Graphics 1.1. הספרייה מספקת תמיכה לצורות SVG כמו עיגולים, אליפסות, מצולעים, מלבנים וכו'. היא תומכת גם בתכונות טרנספורמציות SVG כמו תרגום, סיבוב, קנה מידה, הטיה וכו'.

ספריית SVGo יכולה לרוץ בכל מקום שבו שפת ה-Go זמינה והיא ניידת לחלוטין במערכות הפעלה פופולריות כמו Linux, Mac OS X, Windows וכו'. הספרייה כללה מספר תכונות חשובות הקשורות לצורות, קווים, טקסט, נתיבי ציור, תמונות ו מעברי צבע, טרנספורמציה של תמונה, אפקטים של פילטרים, החלת אנימציות, רכיבי מטא נתונים וכן הלאה.

הספרייה נועדה לייצר קוד סטנדרטי, נקי וקריא שקרוב לקוד מכוון בעבודת יד שעושה שימוש מלא במגוון רכיבי SVG. הספרייה סיפקה תמיכה במסננים מובנים לנוחות המשתמש, כגון פונקציית טשטוש לפי סטיית תקן, מסנן בגווני אפור לתמונה, סיבוב גווני גוונים, היפוך צבעי התמונה, החלת גוון ספיה ועוד רבים.

Previous Next

תחילת העבודה עם הדמיה

הדרך הקלה והמומלצת ביותר להתקין SVGo היא באמצעות GitHub. אנא השתמש בפקודה הבאה להתקנה קלה וחלקה.

התקן SVGo  דרך GitHub

go get -u github.com/ajstarks/svgo

צור SVG באמצעות ספריית GO

ספריית הקוד הפתוח SVGo מאפשרת למפתחי תוכנה ליצור ציורי SVG באופן תוכניתי בתוך האפליקציה שלהם באמצעות פקודות Go. מפתחים צריכים להגדיר את הרוחב והגובה של בד ה-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 סיפקה פונקציונליות ליצירת סוגים שונים של צורות בתוך היישומים שלהם. הוא תומך בציור עיגול, אליפסה, מצולע, מלבן או מלבן מעוגל, ריבוע, סדרה של מקטעי קו ועוד. אתה גם יכול בקלות לצייר קווים ושבילים בקלות. אתה יכול לצייר קשת אליפטית, ריפוי, עקומת בזייר מעוקבת, עקומת בזייר ריבועית וכן הלאה.

עיצוב אתרים באינטרנט באמצעות 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 סיפקה תמיכה מלאה להוספת תמונות וטקסט תוך יצירת ציור SVG באמצעות פקודות Go. בזמן הצבת תמונה או טקסט, עליך לציין את המקום שבו ברצונך להציב אותו ויכול גם להגדיר את הרוחב והגובה של התמונה. ניתן גם להוסיף שורות טקסט מרובות ולהגדיר גודל, מילוי, יישור ומרווח. זה גם תומך בהצבת טקסט מעוצב יחד עם הנתיב. אתה יכול גם להגדיר את הצבע לפי בחירתך באמצעות ערכת RGB.

הוספת תמונה וטקסט ל-SVG בתוך אפליקציות Gt

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 באמצעות ספריית 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()
}
 עִברִית