[Go实战]生成/读取二维码

74 阅读1分钟

go get github.com/boombuler/barcode

go get github.com/tuotoo/qrcode

package main

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

	"github.com/boombuler/barcode"
	"github.com/boombuler/barcode/qr"
	"github.com/tuotoo/qrcode"
)

func main() {
	fileName := "qr.png"
	content := "https://www.baidu.com"
	createQrCode(fileName, content)
	loadQrCode(fileName, content)
}

func createQrCode(fileName, content string) {
	qrCode, _ := qr.Encode(content, qr.M, qr.Auto)

	qrCode, _ = barcode.Scale(qrCode, 256, 256)

	file, _ := os.Create(fileName)
	defer file.Close()

	png.Encode(file, qrCode)
}

func loadQrCode(fileName, content string) {
	fi, err := os.Open(fileName)
	if err != nil {
		fmt.Println(err.Error())
		return
	}
	defer fi.Close()
	matrix, err := qrcode.Decode(fi)
	if err != nil {
		fmt.Println(err.Error())
		return
	}
	fmt.Println("contrast result:", matrix.Content == content)
	fmt.Println(matrix.Content)
}