/qr

QR Code Generator.

Primary LanguageGoMIT LicenseMIT

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: