使用go生成、识别二维码

发布于:2024-12-18 ⋅ 阅读:(50) ⋅ 点赞:(0)

1、下载

# 创建目录
# 进入目录
# 执行 go mod init xxx 命令(即:在当前目录初始化创建一个模块)

# 下载gozxing
go get github.com/makiuchi-d/gozxing

2、生成二维码

package main

import (
	"image/png"
	"os"

	"github.com/makiuchi-d/gozxing"
	"github.com/makiuchi-d/gozxing/oned"
	"github.com/makiuchi-d/gozxing/qrcode"
)

func main() {
	// writeBarcode()
	writeQrcode()
}

// 条形码
func writeBarcode() {
	// Generate a barcode image (*BitMatrix)
	writer := oned.NewCode128Writer()
	img, _ := writer.Encode("content: bar code", gozxing.BarcodeFormat_CODE_128, 100, 50, nil)

	file, _ := os.Create("barcode.png")
	defer file.Close()

	png.Encode(file, img)
}

// 二维码
func writeQrcode() {
	// Generate a qrcode image (*BitMatrix)
	writer := qrcode.NewQRCodeWriter()
	img, _ := writer.Encode("content: qr code", gozxing.BarcodeFormat_QR_CODE, 100, 100, nil)

	file, _ := os.Create("qrcode.png")
	defer file.Close()

	png.Encode(file, img)
}

3、识别二维码

package main

import (
	"fmt"
	"image"
	_ "image/png"
	"os"

	"github.com/makiuchi-d/gozxing"
	"github.com/makiuchi-d/gozxing/oned"
	"github.com/makiuchi-d/gozxing/qrcode"
)

func main() {
	// readBarcode()
	readQrcode()
}

// 条形码
func readBarcode() {
	// open and decode image file
	file, _ := os.Open("barcode.png")
	img, _, _ := image.Decode(file)

	// prepare BinaryBitmap
	bmp, _ := gozxing.NewBinaryBitmapFromImage(img)

	// decode image
	reader := oned.NewCode128Reader()
	result, _ := reader.Decode(bmp, nil)

	fmt.Println(result)
}

// 二维码
func readQrcode() {
	// open and decode image file
	file, _ := os.Open("qrcode.png")
	img, _, _ := image.Decode(file)

	// prepare BinaryBitmap
	bmp, _ := gozxing.NewBinaryBitmapFromImage(img)

	// decode image
	reader := qrcode.NewQRCodeReader()
	result, _ := reader.Decode(bmp, nil)

	fmt.Println(result)
}

详见:

https://pkg.go.dev/search?q=qrcode

GitHub - makiuchi-d/gozxing: Port of ZXing (https://github.com/zxing/zxing) core to pure Go.


网站公告

今日签到

点亮在社区的每一天
去签到