مولد رموز QR بلغة Go (Golang): مكتبة go-qrcode
أصبحت رموز QR جزءًا لا يتجزأ من الويب الحديث - من الروابط إلى المواقع إلى نقل بيانات الاتصال. إذا كنت تطور بلغة Go (Golang) وتريد دمج توليد رموز QR في تطبيقك، فإن مكتبة go-qrcode هي الحل الأمثل. فهي خفيفة الوزن، ومكتوبة بالكامل بلغة Go دون تبعيات خارجية، وتدعم جميع الإصدارات الرئيسية لرموز QR.
التثبيت والإعداد
للبدء، قم بتثبيت الحزمة عبر مدير الوحدات القياسي في Go:
go get github.com/skip2/go-qrcodeلا تتطلب المكتبة أي مكتبات نظام إضافية - كل شيء يعمل فورًا. وهي تدعم إصدار Go 1.13 وما فوق.
الاستخدام الأساسي: إنشاء أول رمز QR
أبسط طريقة لتوليد رمز QR هي استخدام الدالة WriteFile. وهي تنشئ صورة PNG مباشرة على القرص:
package main
import ( "github.com/skip2/go-qrcode")
func main() { err := qrcode.WriteFile("https://pythonlib.ru", qrcode.Medium, 256, "qr.png") if err != nil { panic(err) }}في هذا المثال، نقوم بإنشاء رمز QR للرابط https://pythonlib.ru بمستوى تصحيح أخطاء Medium وحجم 256×256 بكسل. يتم حفظ النتيجة في ملف qr.png.
معلمات التوليد
تأخذ الدالة WriteFile أربع وسائط:
- content (string) — البيانات المراد ترميزها (نص، رابط، رقم هاتف، إلخ)
- level (RecoveryLevel) — مستوى تصحيح الأخطاء. القيم المتاحة:
qrcode.Low— استرداد 7%qrcode.Medium— استرداد 15%qrcode.High— استرداد 25%qrcode.Highest— استرداد 30%
- size (int) — حجم الصورة بالبكسل (عادة من 128 إلى 1024)
- filename (string) — مسار ملف الإخراج (امتداد .png إلزامي)
توليد رمز QR في الذاكرة (بدون حفظ على القرص)
إذا كنت بحاجة إلى الحصول على رمز QR كبايتات PNG (على سبيل المثال، للإرسال عبر HTTP أو الحفظ في قاعدة بيانات)، استخدم طريقة PNG:
package main
import ( "bytes" "image/png" "log" "github.com/skip2/go-qrcode")
func main() { // إنشاء رمز QR qr, err := qrcode.New("https://pythonlib.ru", qrcode.Medium) if err != nil { log.Fatal(err) }
// الحصول على الصورة كـ *image.RGBA img := qr.Image(256)
// ترميز إلى PNG والحصول على البايتات var buf bytes.Buffer err = png.Encode(&buf, img) if err != nil { log.Fatal(err) }
// الآن buf.Bytes() يحتوي على بيانات PNG log.Printf("تم توليد رمز QR، الحجم: %d بايت", buf.Len())}هذا الأسلوب مناسب لخوادم الويب: يمكنك إرجاع رمز QR مباشرة في استجابة HTTP دون إنشاء ملفات مؤقتة.
تخصيص الألوان والخلفية
افتراضيًا، يكون رمز QR أبيض وأسود، ولكن المكتبة تسمح بتغيير الألوان. استخدم الطريقتين ForegroundColor و BackgroundColor:
package main
import ( "image/color" "log" "github.com/skip2/go-qrcode")
func main() { qr, err := qrcode.New("https://pythonlib.ru", qrcode.High) if err != nil { log.Fatal(err) }
// تعيين اللون الأزرق للوحدات والأبيض للخلفية qr.ForegroundColor = color.RGBA{0, 0, 255, 255} // أزرق qr.BackgroundColor = color.RGBA{255, 255, 255, 255} // أبيض
// حفظ بالألوان الجديدة err = qr.WriteFile(256, "colorful_qr.png") if err != nil { log.Fatal(err) }}<