To help gophers generate QR Codes with customized styles, such as color, block size, block shape, and icon.
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 used
Features
- [x] Normally generate QR code across
version 1toversion 40. - [x] Automatically analyze QR version by source text.
- [x] Specifying cell shape allowably with
WithCustomShape,WithCircleShape(default isrectangle) - [x] Specifying output file's format with
WithBuiltinImageEncoder,WithCustomImageEncoder(default isJPEG) - [x] Not only shape of cell, but also color of QR Code background and foreground color.
- [x]
WithLogoImage,WithLogoImageFilePNG,WithLogoImageFileJPEGhelp you add an icon at the central of QR Code. - [x]
WithBorderWidthallows to specify any width of 4 sides around the qrcode. - [x]
WebAssemblysupport, check out the Example and README for more detail. - [x] 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
// EncModeKanji mode ...
EncModeKanji
)
// 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 {}
Samples
These samples are generated with standard writer, check out Example for more details.
| A | B | C | D | |--------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------| | 
bg-fg color | 
transparent | 
border padding | 
circle shape | | 
fg gradient | 
using halftone | 
set logo image | 
block width | | 
custom shape | | | |
Built-in Writers
- Standard Writer, prints QRCode into file and stream
- Terminal Writer, prints QRCode into terminal
- File Writer, prints QRCode into files
- Compressed Writer, It's generated on a very small scale
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