在go语言中使用rsc/qr扩展包生成二维码流程步骤
Go  /  管理员 发布于 1年前   783
如何用https://godoc.org/code.google.com/p/rsc/qr包生成QR码。
二维码的生成在现实世界中有很多应用,而且在全球范围内的应用越来越多,特别是在在线安全和移动应用方面。
对于移动设备......除了在手机上手动输入数据外,扫描二维码是捕捉文本数据的第二种最流行的形式。
使用https://godoc.org/code.google.com/p/rsc/qr包,生成二维码是相当容易和直接的。
话不多说,这里有一个在Golang中生成QR码的例子。
示例代码:
package main
import (
"bytes"
"code.google.com/p/rsc/qr"
"crypto/rand"
"fmt"
"image"
"image/png"
"os"
"runtime"
)
func randStr(strSize int, randType string) string {
var dictionary string
if randType == "alphanum" {
dictionary = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
}
if randType == "alpha" {
dictionary = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
}
if randType == "number" {
dictionary = "0123456789"
}
var bytes = make([]byte, strSize)
rand.Read(bytes)
for k, v := range bytes {
bytes[k] = dictionary[v%byte(len(dictionary))]
}
return string(bytes)
}
func main() {
//最大限度地提高CPU的使用率,以获得最大的性能
runtime.GOMAXPROCS(runtime.NumCPU())
//产生一个随机字符串--最好是6或8个字符
randomStr := randStr(6, "alphanum")
fmt.Println(randomStr)
//生成链接或任何你想要的数据
// 编码成QR码
// 在这个例子中,我们使用一个通过QR码进行购买的例子。
// 用你的东西来代替 stuff2buy。
stuff2buy := "stuffpurchaseby?userid=" + randomStr + "&issuer=SomeBigSuperMarket"
//将 stuff2buy 编码为 QR 码
// qr.H = 65%的冗余水平
// 见 https://godoc.org/code.google.com/p/rsc/qr#Level
code, err := qr.Encode(stuff2buy, qr.H)
if err != nil {
fmt.Println(err)
os.Exit(1)
}
imgByte := code.PNG()
//将字节转换为图像以保存在文件中
img, _, _ := image.Decode(bytes.NewReader(imgByte))
//将imgByte保存到文件中
out, err := os.Create("./QRImg.png")
if err != nil {
fmt.Println(err)
os.Exit(1)
}
err = png.Encode(out, img)
if err != nil {
fmt.Println(err)
os.Exit(1)
}
//
fmt.Println("生成二维码并保存到QRimg1.png")
}
输出:
注意:
本教程生成的QR码与谷歌认证器不兼容。
如果你想用Google Authenticator生成用于双因素认证的QR码,你需要使用
https://github.com/google/google-authenticator/wiki/Key-Uri-Format
中指定的URI格式来生成QR码。
谷歌认证器的二维码教程
https://www.socketloop.com/tutorials/golang-generate-qr-codes-for-google-authenticator-app-and-fix-cannot-interpret-qr-code-error
122 在
学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..123 在
Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..原梓番博客 在
在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..博主 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..1111 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
Copyright·© 2019 侯体宗版权所有·
粤ICP备20027696号