5.4 KiB
5.4 KiB
go-qrcode
QR code (abbreviated from Quick Response Code) is the trademark for a type of matrix barcode (or two-dimensional barcode) first designed in 1994 for the automotive industry in Japan. A barcode is a machine-readable optical label that contains information about the item to which it is attached. A QR code uses four standardized encoding modes (numeric, alphanumeric, byte/binary, and kanji) to store data efficiently; extensions may also be usedFeatures
- Normally generate QR code across
version 1
toversion 40
. - Automatically analyze QR version by source text.
- Specifying cell shape allowably with
WithCustomShape
,WithCircleShape
(default isrectangle
) - Specifying output file's format with
WithBuiltinImageEncoder
,WithCustomImageEncoder
(default isJPEG
) - Not only shape of cell, but also color of QR Code background and foreground color.
WithLogoImage
,WithLogoImageFilePNG
,WithLogoImageFileJPEG
help you add an icon at the central of QR Code.WithBorderWidth
allows to specify any width of 4 sides around the qrcode.WebAssembly
support, check out the Example and README for more detail.- support Halftone QR Codes, check out the Example.
Install
go get -u github.com/yeqown/go-qrcode/v2
Quick Start
link to CODE
package main
import (
"github.com/yeqown/go-qrcode/v2"
"github.com/yeqown/go-qrcode/writer/standard"
)
func main() {
qrc, err := qrcode.New("https://github.com/yeqown/go-qrcode")
if err != nil {
fmt.Printf("could not generate QRCode: %v", err)
return
}
w, err := standard.New("../assets/repo-qrcode.jpeg")
if err != nil {
fmt.Printf("standard.New failed: %v", err)
return
}
// save file
if err = qrc.Save(w); err != nil {
fmt.Printf("could not save image: %v", err)
}
}
Options
const (
// EncModeNone mode ...
EncModeNone encMode = 1 << iota
// EncModeNumeric mode ...
EncModeNumeric
// EncModeAlphanumeric mode ...
EncModeAlphanumeric
// EncModeByte mode ...
EncModeByte
// EncModeJP mode ...
EncModeJP
)
// WithEncodingMode sets the encoding mode.
func WithEncodingMode(mode encMode) EncodeOption {}
const (
// ErrorCorrectionLow :Level L: 7% error recovery.
ErrorCorrectionLow ecLevel = iota + 1
// ErrorCorrectionMedium :Level M: 15% error recovery. Good default choice.
ErrorCorrectionMedium
// ErrorCorrectionQuart :Level Q: 25% error recovery.
ErrorCorrectionQuart
// ErrorCorrectionHighest :Level H: 30% error recovery.
ErrorCorrectionHighest
)
// WithErrorCorrectionLevel sets the error correction level.
func WithErrorCorrectionLevel(ecLevel ecLevel) EncodeOption {}
following are some shots:
Built-in Writers
- Standard Writer, prints QRCode into file and stream
- Terminal Writer, prints QRCode into terminal
Of course, you can also code your own writer, just implement Writer interface.
Migrating from v1
go-qrcode.v2
is a major upgrade from v1, and it is not backward compatible. v2
redesigned
the API, and it is more flexible and powerful. Features are split into different modules (according to functionality).
- github.com/yeqown/go-qrcode/v2 core
- github.com/yeqown/go-qrcode/writer/standard writer/imageFile
- github.com/yeqown/go-qrcode/writer/terminal writer/terminal
Check example/migrating-from-v1 for more details.