QR-Code-Generator in Go (Golang): Bibliothek go-qrcode
QR-Codes sind zu einem unverzichtbaren Bestandteil des modernen Webs geworden – von Links zu Websites bis zur Übertragung von Kontaktdaten. Wenn Sie in Go (Golang) entwickeln und die Generierung von QR-Codes in Ihre Anwendung integrieren möchten, ist die Bibliothek go-qrcode die ideale Lösung. Sie ist leichtgewichtig, vollständig in Go ohne externe Abhängigkeiten geschrieben und unterstützt alle gängigen QR-Code-Versionen.
Installation und Einrichtung
Um zu beginnen, installieren Sie das Paket über den standardmäßigen Go-Modul-Manager:
go get github.com/skip2/go-qrcodeDie Bibliothek benötigt keine zusätzlichen Systembibliotheken – alles funktioniert sofort. Unterstützt wird Go Version 1.13 und höher.
Grundlegende Verwendung: Erstellen des ersten QR-Codes
Der einfachste Weg, einen QR-Code zu generieren, ist die Verwendung der Funktion WriteFile. Sie erstellt ein PNG-Bild direkt auf der Festplatte:
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) }}In diesem Beispiel erstellen wir einen QR-Code für die URL https://pythonlib.ru mit der Fehlerkorrekturstufe Medium und einer Größe von 256x256 Pixeln. Das Ergebnis wird in der Datei qr.png gespeichert.
Generierungsparameter
Die Funktion WriteFile akzeptiert vier Argumente:
- content (string) – die zu kodierenden Daten (Text, URL, Telefonnummer usw.)
- level (RecoveryLevel) – die Fehlerkorrekturstufe. Verfügbare Werte:
qrcode.Low– 7% Wiederherstellungqrcode.Medium– 15% Wiederherstellungqrcode.High– 25% Wiederherstellungqrcode.Highest– 30% Wiederherstellung
- size (int) – die Bildgröße in Pixeln (normalerweise zwischen 128 und 1024)
- filename (string) – der Pfad zur Ausgabedatei (die Erweiterung .png ist erforderlich)
Generierung eines QR-Codes im Arbeitsspeicher (ohne Speichern auf der Festplatte)
Wenn Sie den QR-Code als PNG-Bytes erhalten möchten (z. B. zum Senden über HTTP oder zum Speichern in einer Datenbank), verwenden Sie die Methode PNG:
package main
import ( "bytes" "image/png" "log" "github.com/skip2/go-qrcode")
func main() { // QR-Code erstellen qr, err := qrcode.New("https://pythonlib.ru", qrcode.Medium) if err != nil { log.Fatal(err) }
// Bild als *image.RGBA abrufen img := qr.Image(256)
// In PNG kodieren und Bytes abrufen var buf bytes.Buffer err = png.Encode(&buf, img) if err != nil { log.Fatal(err) }
// Jetzt enthält buf.Bytes() die PNG-Daten log.Printf("QR-Code generiert, Größe: %d Bytes", buf.Len())}Dieser Ansatz ist praktisch für Webserver: Sie können den QR-Code direkt in der HTTP-Antwort ausliefern, ohne temporäre Dateien zu erstellen.
Anpassung von Farben und Hintergrund
Standardmäßig ist der QR-Code schwarz-weiß, aber die Bibliothek ermöglicht Farbänderungen. Verwenden Sie die Methoden ForegroundColor und 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) }
// Blaue Farbe für die Module und Weiß für den Hintergrund festlegen qr.ForegroundColor = color.RGBA{0, 0, 255, 255} // blau qr.BackgroundColor = color.RGBA{255, 255, 255, 255} // weiß
// Mit neuen Farben speichern err = qr.WriteFile(256, "colorful_qr.png") if err != nil { log.Fatal(err) }} Auch in der Bibliothek
WebSocket-Bibliotheken für Rust: Tokio-tungstenite und async-tungstenite für Echtzeit
Arbeit mit S3 und Cloud-Speichern in C++: Die AWS SDK für C++ Bibliothek