Go每日一库之171:go-qrcode

发布时间 2023-09-29 21:54:14作者: 阿瑞娜

使用Go语言编程时,生成任意内容的二维码是非常方便的,可以使用 go-qrcode 这个库快速生成二维码。大家可以从 github 上(https://github.com/skip2/go-qrcode)下载并使用这个库。要是下载不下来的挂个代理就可。
上代码

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,

它的定义和常量如下:

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 设置,实现对二维码的自定义。
比如我们设置背景色为绿色,前景色为黑色的二维码

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")
    }
}


要想生活过的去,还得是这一点绿啊