مكتبة Open Source Go لإنشاء SVG ومعالجتها

واجهة برمجة تطبيقات Go مستقرة للغاية تدعم إنشاء رسومات SVG. يمكنك إضافة الأشكال والخطوط والنصوص والصور والمسارات وتطبيق الألوان والتدرجات والرسوم المتحركة والمزيد.  

SVGo هي مكتبة لغة Go مفتوحة المصدر تمكن مطوري البرامج من إنشاء SVG داخل تطبيقاتهم الخاصة باستخدام Scalable Vector Graphics 1.1 Specification. توفر المكتبة دعمًا لأشكال 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 عبر GO

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 وظائف لإنشاء أنواع مختلفة من الأشكال داخل تطبيقاتهم الخاصة. وهو يدعم رسم دائرة أو قطع ناقص أو مضلع أو مستطيل أو مستطيل مستدير الزوايا ومربع وسلسلة من مقاطع الخط والمزيد. يمكنك أيضًا بسهولة رسم الخطوط والمسارات بسهولة. يمكنك رسم قوس بيضاوي ، علاج ، منحنى بيزير مكعب ، منحنى بيزير تربيعي ، وما إلى ذلك.

رسم دائرة عبر الإنترنت عبر GO

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 داخل تطبيقات GO

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). SVGo يتيح للمطورين إنشاء رسوم متحركة مذهلة وتصدير ملف SVG متحرك واحد بسهولة. تسمح المكتبة بتحريك العنصر المشار إليه بواسطة الارتباط ، وتحريك الكائن المشار إليه على طول المسار المحدد ، وتحريك تحويل الترجمة ، وتحريك تحويل التدوير ، وتحريك المقياس أو تحويل skewX ، وما إلى ذلك.

أضف الرسوم المتحركة إلى SVG عبر مكتبة GO

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()
}
 عربي