在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
1 引言 在github上有好用golan二维码生成和读取库,两个生成二维码的qrcode库和一个读取qrcode库。 skip2/go-qrcode生成二维码,github地址:https://github.com/skip2/go-qrcode boombuler/barcode生成二维码,github地址:https://github.com/boombuler/barcode
tuotoo/qrcode解析二维码,github地址:https://github.com/tuotoo/qrcode
2 代码 import ( "image/png" "os" "github.com/boombuler/barcode" "github.com/boombuler/barcode/qr" "github.com/skip2/go-qrcode" qrcodeReader "github.com/tuotoo/qrcode" "fmt" ) func main() { content := "https://www.cnblogs.com/fanbi" size := 200 //Skip2 dest := "qrcode.png" CreateQRCodeBySkip2(content, qrcode.Medium, size, dest) fmt.Println("QRCodeBySkip2 content",ReadQRCode(dest)) //Boombuler dest2 := "qrcode2.png" CreateQRCodeByBoombuler(content, qr.M, size, dest2) fmt.Println("QRCodeBySBoombule content",ReadQRCode(dest2)) //输出 //QRCodeBySkip2 content https://www.cnblogs.com/fanbi //QRCodeBySBoombule content https://www.cnblogs.com/fanbi } func CreateQRCodeBySkip2(content string, quality qrcode.RecoveryLevel, size int, dest string) (err error) { err = qrcode.WriteFile(content, quality, size, dest) return } func CreateQRCodeByBoombuler(content string, quality qr.ErrorCorrectionLevel, size int, dest string) (err error) { qrCode, err := qr.Encode(content, quality, qr.Auto) if err != nil { return } // Scale the barcode to 200x200 pixels qrCode, err = barcode.Scale(qrCode, size, size) if err != nil { return } // create the output file file, err := os.Create(dest) if err != nil { return } defer file.Close() // encode the barcode as png err = png.Encode(file, qrCode) if err != nil { return } return } func ReadQRCode(filename string) (content string) { fi, err := os.Open(filename) if err != nil { fmt.Println(err.Error()) return } defer fi.Close() qrmatrix, err := qrcodeReader.Decode(fi) if err != nil { fmt.Println(err.Error()) return } return qrmatrix.Content } 效果图: qrcode.png qrcode2.png 说明:第二种生成的二维码会更好,图片的四周白边占比小。
3 参考 https://blog.csdn.net/wangshubo1989/article/details/77897363
|
请发表评论