使用Go语言编程时,生成任意内容的二维码是非常方便的,可以使用 go-qrcode 这个库快速生成二维码。大家可以从 github 上(https://github.com/skip2/go-qrcode)下载并使用这个库。要是下载不下来的挂个代理就可。 上代码
代码语言:javascript复制package main
import "github.com/skip2/go-qrcode"
func main() {
qrcode.WriteFile("https://blog.csdn.net/qq_42828912?spm=3001.5343&type=blog",qrcode.Medium,256,"./golang_qrcode.png")
}
这样我们运行代码的时候,就在当前目录下,生成一张 256*256 的二维码,我生成的是自己主页的二维码。
然后来说一下代码中用到的这个方法 func WriteFile(content string, level RecoveryLevel, size int, filename string) error WriteFile 函数的原型定义如上,它有几个参数,大概意思如下: content 表示要生成二维码的内容,可以是任意字符串; level 表示二维码的容错级别,取值有 Low、Medium、High、Highest; size 表示生成图片的 width 和 height,像素单位; filename 表示生成的文件名路径; RecoveryLevel 类型其实是个 int, 它的定义和常量如下:
代码语言:javascript复制type RecoveryLevel int
const (
// Level L: 7% error recovery.
Low RecoveryLevel = iota
// Level M: 15% error recovery. Good default choice.
Medium
// Level Q: 25% error recovery.
High
// Level H: 30% error recovery.
Highest
)
RecoveryLevel 越高,二维码的容错能力越好
生成二维码图片字节
有时候我们不想直接生成一个 PNG 文件存储,我们想对 PNG 图片做一些处理,比如缩放了,旋转了,或者网络传输了等,基于此,我们可以使用 Encode 函数,生成一个 PNG 图片的字节流,这样我们就可以进行各种处理了 还是go-qrcode这个库的方法 func Encode(content string, level RecoveryLevel, size int) ([]byte, error) 用法和 WriteFile 函数差不多,只不过返回的是一个 []byte 字节数组,这样我们就可以对这个字节数组进行处理了。
自定义二维码
光是生成当然不行,我们得想法让它好看点 除了以上两种快捷方式,go-qrcode 库还为我们提供了对二维码的自定义方式,比如我们可以自定义二维码的前景色和背景色等。qrcode.New 函数可以返回一个 *QRCode,我们可以对 *QRCode 设置,实现对二维码的自定义。 比如我们设置背景色为绿色,前景色为黑色的二维码
代码语言:javascript复制package main
import(
"github.com/skip2/go-qrcode"
"image/color"
"log"
)
func main() {
qr,err:=qrcode.New("https://blog.csdn.net/qq_42828912?spm=3001.5343&type=blog",qrcode.Medium)
if err != nil {
log.Fatal(err)
} else {
qr.BackgroundColor = color.RGBA{50,205,50,255}
qr.ForegroundColor = color.BLACK
qr.WriteFile(256,"./golang_qrcode.png")
}
}
要想生活过的去,还得是这一点绿啊