qr
qr is a library for generating QR Codes in pure Go.
go get github.com/AlexEidt/qr
Usage
qrcode, err := qr.NewQRCode("QR Code", &qr.Options{Error: "H"})
if err != nil {
panic(err)
}
qrcode.Render("qr.png", 10)
Below are the functions available for a QRCode.
qr.NewQRCode(data string, options *qr.Options) (*qr.QRCode, error)
Version() int
Mode() int // 1: numeric, 2: alphanumeric, 4: byte
ErrorLevel() string // L, M, Q, H
Bitmap() *qr.Bitmap
Render(filename string, scale int) error // .png, .jpg, .svg supported
Options
When building a QR Code, certain parameters can be specified such as the Version, Mode and Error Correction Level.
type Options struct {
Version int
Mode int
Error string
}
| Parameter |
Description |
Version |
The version of the QR Code to be generated. Must be between 1 and 40. Defaults to lowest version that fits the given data. |
Mode |
The mode of the QR Code to be generated. Must be qr.Numeric, qr.AlphaNum, or qr.Byte. The best fit is found based on the given data. See the Supported Modes section below for the characters that can be used in each mode. |
Error |
The error correction level of the QR Code to be generated. Must be L, M, Q, or H. Defaults to L. Level L can correct ~7% of errors, M can correct ~15% of errors, Q can correct ~25% of errors, and H can correct ~30% of errors. |
Supported Modes
Currently, only Numeric, Alphanumeric and Binary modes are supported for data encoding.
| Mode |
Character Set |
| Numeric |
0123456789 |
| Alphanumeric |
0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ $%*+-./: |
| Binary |
ISO/IEC 8859-1 |
Notes
- Kanji mode is not supported.
- Structured Append mode is not supported.
- Extended Channel Interpretations (ECI) mode is not supported.
- Model 1 QR Codes are not supported.
Acknowledgements
The following resources were helpful in building this library: