ZXing is an open-source, multi-format 1D/2D barcode image processing library for Java. This project is a port of ZXing core library to pure Go.
| Format | Scanning | Encoding |
|---|---|---|
| QR Code | ✔️ | ✔️ |
| Data Matrix | ✔️ | ✔️ |
| Aztec | ✔️ | |
| PDF 417 | ||
| MaxiCode |
| Format | Scanning | Encoding |
|---|---|---|
| UPC-A | ✔️ | ✔️ |
| UPC-E | ✔️ | ✔️ |
| EAN-8 | ✔️ | ✔️ |
| EAN-13 | ✔️ | ✔️ |
| Format | Scanning | Encoding |
|---|---|---|
| Code 39 | ✔️ | ✔️ |
| Code 93 | ✔️ | ✔️ |
| Code 128 | ✔️ | ✔️ |
| Codabar | ✔️ | ✔️ |
| ITF | ✔️ | ✔️ |
| RSS-14 | ✔️ | - |
| RSS-Expanded |
| Reader/Writer | Porting status |
|---|---|
| MultiFormatReader | |
| MultiFormatWriter | |
| ByQuadrantReader | |
| GenericMultipleBarcodeReader | |
| QRCodeMultiReader | ✔️ |
| MultiFormatUPCEANReader | ✔️ |
| MultiFormatOneDReader |
package main
import (
"fmt"
"image"
_ "image/jpeg"
"os"
"github.com/makiuchi-d/gozxing"
"github.com/makiuchi-d/gozxing/qrcode"
)
func main() {
// open and decode image file
file, _ := os.Open("qrcode.jpg")
img, _, _ := image.Decode(file)
// prepare BinaryBitmap
bmp, _ := gozxing.NewBinaryBitmapFromImage(img)
// decode image
qrReader := qrcode.NewQRCodeReader()
result, _ := qrReader.Decode(bmp, nil)
fmt.Println(result)
}package main
import (
"image/png"
"os"
"github.com/makiuchi-d/gozxing"
"github.com/makiuchi-d/gozxing/oned"
)
func main() {
// Generate a barcode image (*BitMatrix)
enc := oned.NewCode128Writer()
img, _ := enc.Encode("Hello, Gophers!", gozxing.BarcodeFormat_CODE_128, 250, 50, nil)
file, _ := os.Create("barcode.png")
defer file.Close()
// *BitMatrix implements the image.Image interface,
// so it is able to be passed to png.Encode directly.
_ = png.Encode(file, img)
}