Open Source Go Library สำหรับการสร้างและจัดการ 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 ได้รับการพัฒนาร่วมกับ 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()
}
 ไทย