go-qrcode
Package qrcode implements a QR Code encoder.
A QR Code is a matrix (two-dimensional) barcode. Arbitrary content may be encoded, with URLs being a popular choice :)
Each QR Code contains error recovery information to aid reading damaged or obscured codes. There are four levels of error recovery: Low, medium, high and highest. QR Codes with a higher recovery level are more robust to damage, at the cost of being physically larger.
Install
go get -u github.com/Z-M-Huang/go-qrcode/...
A command-line tool qrcode
will be built into $GOPATH/bin/
.
Usage
import qrcode "github.com/Z-M-Huang/go-qrcode"
-
Create a 256x256 PNG image:
var png []byte
png, err := qrcode.Encode("https://example.org", qrcode.Medium, 256)
-
Create a 256x256 PNG image and write to a file:
err := qrcode.WriteFile("https://example.org", qrcode.Medium, 256, "qr.png")
-
Create a 256x256 PNG image with custom colors and write to file:
err := qrcode.WriteColorFile("https://example.org", qrcode.Medium, 256, color.Black, color.White, "qr.png")
-
Create a 256x256 PNG image with logo:
logoImg, _ := os.Open("google.png")
defer logoImg.Close()
logo, _, _ := image.Decode(logoImg)
var q *qrcode.QRCode
q, _ = qrcode.New(content, qrcode.Highest)
png, _ := q.PNGWithLogo(256, logo)
var fh *os.File
fh, _ = os.Create(outFile + ".png")
defer fh.Close()
fh.Write(png)
-
Create a 256x256 PNG image with background image:
logoImg, _ := os.Open("google.png")
defer logoImg.Close()
logo, _, _ := image.Decode(logoImg)
var q *qrcode.QRCode
q, _ = qrcode.New(content, qrcode.Highest)
q.BackgroundImage = logo
png, _ := q.PNG(256, logo)
var fh *os.File
fh, _ = os.Create(outFile + ".png")
defer fh.Close()
fh.Write(png)
-
Create a 256x256 GIF image with Animated Logo GIF:
logoGifImage, _ := os.Open("google.gif")
defer logoGifImage.Close()
logo, _:= gif.DecodeAll(logoGifImage)
var q *qrcode.QRCode
q, _ = qrcode.New(content, qrcode.Highest)
gif, _ := q.GIFLogo(256, logo)
var fh *os.File
fh, _ = os.Create(outFile + ".gif")
defer fh.Close()
fh.Write(gif)
All examples use the qrcode.Medium error Recovery Level and create a fixed 256x256px size QR Code. The last function creates a white on black instead of black on white QR Code.
CLI
A command-line tool qrcode
will be built into $GOPATH/bin/
.
qrcode -- QR Code encoder in Go
https://github.com/Z-M-Huang/go-qrcode
Flags:
-d disable QR Code border
-i invert black and white
-o string
out PNG file prefix, empty for stdout
-s int
image size (pixel) (default 256)
-t print as text-art on stdout
Usage:
1. Arguments except for flags are joined by " " and used to generate QR code.
Default output is STDOUT, pipe to imagemagick command "display" to display
on any X server.
qrcode hello word | display
2. Save to file if "display" not available:
qrcode "homepage: https://github.com/Z-M-Huang/go-qrcode" > out.png
Maximum capacity
The maximum capacity of a QR Code varies according to the content encoded and the error recovery level. The maximum capacity is 2,953 bytes, 4,296 alphanumeric characters, 7,089 numeric digits, or a combination of these.
Borderless QR Codes
To aid QR Code reading software, QR codes have a built in whitespace border.
If you know what you're doing, and don't want a border, see https://gist.github.com/skip2/7e3d8a82f5317df9be437f8ec8ec0b7d for how to do it. It's still recommended you include a border manually.
Links
Thanks
This is a forked version from https://github.com/skip2/go-qrcode. Special thanks to all the devs for the incredible work you've done!