Go (Golang) QR码生成器:go-qrcode库
QR码已成为现代网络不可或缺的一部分——从网站链接到传输联系信息。如果您使用Go (Golang)进行开发,并希望在应用程序中集成QR码生成功能,go-qrcode库是理想的解决方案。它轻量级,完全用Go编写,无外部依赖,并支持所有主要QR码版本。
安装与配置
首先,通过标准的Go模块管理器安装该包:
go get github.com/skip2/go-qrcode该库不需要额外的系统库——开箱即用。支持Go 1.13及以上版本。
基本用法:创建第一个QR码
生成QR码最简单的方法是使用WriteFile函数。它直接将PNG图像保存到磁盘:
package main
import ( "github.com/skip2/go-qrcode")
func main() { err := qrcode.WriteFile("https://pythonlib.ru", qrcode.Medium, 256, "qr.png") if err != nil { panic(err) }}在此示例中,我们为URL https://pythonlib.ru创建了一个QR码,纠错级别为Medium,尺寸为256x256像素。结果保存到文件qr.png中。
生成参数
WriteFile函数接受四个参数:
- content (string) — 要编码的数据(文本、URL、电话号码等)
- level (RecoveryLevel) — 纠错级别。可用值:
qrcode.Low— 7%恢复能力qrcode.Medium— 15%恢复能力qrcode.High— 25%恢复能力qrcode.Highest— 30%恢复能力
- size (int) — 图像尺寸(像素,通常为128到1024)
- filename (string) — 输出文件路径(必须为.png扩展名)
在内存中生成QR码(不保存到磁盘)
如果您需要以PNG字节形式获取QR码(例如,通过HTTP发送或保存到数据库),请使用PNG方法:
package main
import ( "bytes" "image/png" "log" "github.com/skip2/go-qrcode")
func main() { // 创建QR码 qr, err := qrcode.New("https://pythonlib.ru", qrcode.Medium) if err != nil { log.Fatal(err) }
// 获取图像为 *image.RGBA img := qr.Image(256)
// 编码为PNG并获取字节 var buf bytes.Buffer err = png.Encode(&buf, img) if err != nil { log.Fatal(err) }
// 现在 buf.Bytes() 包含PNG数据 log.Printf("QR码已生成,大小:%d 字节", buf.Len())}这种方法对Web服务器很方便:您可以直接在HTTP响应中返回QR码,无需创建临时文件。
颜色和背景设置
默认情况下,QR码是黑白的,但该库允许更改颜色。使用ForegroundColor和BackgroundColor方法:
package main
import ( "image/color" "log" "github.com/skip2/go-qrcode")
func main() { qr, err := qrcode.New("https://pythonlib.ru", qrcode.High) if err != nil { log.Fatal(err) }
// 设置模块为蓝色,背景为白色 qr.ForegroundColor = color.RGBA{0, 0, 255, 255} // 蓝色 qr.BackgroundColor = color.RGBA{255, 255, 255, 255} // 白色
// 使用新颜色保存 err = qr.WriteFile(256, "colorful_qr.png") if err != nil { log.Fatal(err) }}