gozxing A Barcode Scanning/Encoding Library for Go

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.
Porting Status (supported formats)
2D barcodes
Format |
Scanning |
Encoding |
QR Code |
:heavy_check_mark: |
:heavy_check_mark: |
Data Matrix |
:heavy_check_mark: |
:heavy_check_mark: |
Aztec |
:heavy_check_mark: |
|
PDF 417 |
|
|
MaxiCode |
|
|
1D product barcodes
Format |
Scanning |
Encoding |
UPC-A |
:heavy_check_mark: |
:heavy_check_mark: |
UPC-E |
:heavy_check_mark: |
:heavy_check_mark: |
EAN-8 |
:heavy_check_mark: |
:heavy_check_mark: |
EAN-13 |
:heavy_check_mark: |
:heavy_check_mark: |
1D industrial barcode
Format |
Scanning |
Encoding |
Code 39 |
:heavy_check_mark: |
:heavy_check_mark: |
Code 93 |
:heavy_check_mark: |
:heavy_check_mark: |
Code 128 |
:heavy_check_mark: |
:heavy_check_mark: |
Codabar |
:heavy_check_mark: |
:heavy_check_mark: |
ITF |
:heavy_check_mark: |
:heavy_check_mark: |
RSS-14 |
:heavy_check_mark: |
- |
RSS-Expanded |
|
|
Special reader/writer
Reader/Writer |
Porting status |
MultiFormatReader |
|
MultiFormatWriter |
|
ByQuadrantReader |
|
GenericMultipleBarcodeReader |
|
QRCodeMultiReader |
:heavy_check_mark: |
MultiFormatUPCEANReader |
:heavy_check_mark: |
MultiFormatOneDReader |
|
Usage Examples
Scanning QR code
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)
}
Generating CODE128 barcode
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)
}