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 Library

Библиотеката 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 анимационните елементи са разработени в сътрудничество с работната група за синхронизирана мултимедия на Консорциума на световната мрежа (W3C). 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()
}
 Български