Go (Golang) QR码生成器:使用go-qrcode库

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

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

推荐