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

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

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

开始课程

go-qrcode库:在Go (Golang)中生成QR码



QR码已成为现代网络和移动应用程序不可或缺的一部分。它们用于快速访问链接、传输联系信息、身份验证等。如果您的项目是用Go (Golang)编写的,那么用于创建QR码的最佳库之一是go-qrcode。在本文中,我们将详细介绍其功能、安装和使用示例。



什么是go-qrcode?



go-qrcode是用Go语言编写的纯QR码生成器实现。它没有外部依赖(标准库除外),并支持所有主要功能:配置大小、纠错级别、颜色和背景。该库可以生成PNG图像,也可以返回原始二进制数据以供进一步处理。



安装



使用标准命令go get安装该库:



go get github.com/skip2/go-qrcode


之后,您可以将其导入到您的项目中:



import (    "github.com/skip2/go-qrcode")


主要功能



  • 生成PNG图像 — 最常用的场景。
  • 配置纠错级别 — 低、中、高、最高。
  • 更改大小 — 从21x21到177x177模块。
  • 配置颜色 — 可以设置前景色和背景色。
  • 支持Unicode — 可以编码任何文本,包括西里尔字母。
  • 输出原始格式 — 用于自定义处理的字节数组。


代码示例



1. 最简单的QR码



为URL生成一个QR码并保存到文件:



package main

import ( "github.com/skip2/go-qrcode")

func main() { err := qrcode.WriteFile("https://pythonlib.ru", qrcode.Medium, 256, "qrcode.png") if err != nil { panic(err) }}


在这个例子中,我们使用中等纠错级别(qrcode.Medium)和256x256像素的图像大小。



2. 配置颜色



如果您需要非标准的QR码颜色,请使用qrcode.Config结构体:



package main

import ( "image/color" "github.com/skip2/go-qrcode")

func main() { qr, err := qrcode.New("你好,世界!", qrcode.Highest) if err != nil { panic(err) }

// 配置颜色 qr.ForegroundColor = color.RGBA{R: 0, G: 150, B: 255, A: 255} // 蓝色 qr.BackgroundColor = color.RGBA{R: 255, G: 255, B: 255, A: 255} // 白色

err = qr.WriteFile(256, "custom_qrcode.png") if err != nil { panic(err) }}


3. 以字节形式获取PNG



有时不需要保存文件,而是通过HTTP提供图像或进行进一步处理。为此,请使用PNG()方法:



package main

import ( "fmt" "github.com/skip2/go-qrcode")

func main() { qr, err := qrcode.New("https://example.com", qrcode.Low) if err != nil { panic(err) }

pngBytes, err := qr.PNG(256) if err != nil { panic(err) }

fmt.Printf("PNG大小:%d 字节", len(pngBytes)) // 现在可以将pngBytes发送到HTTP响应或保存起来}


4. 以最小尺寸生成



如果您想获得尽可能小的QR码,可以使用ToQRTerminal()方法在终端中进行调试,或设置最小模块大小:



package main

import ( "fmt" "github.com/skip2/go-qrcode")

func main() { qr, err := qrcode.New("1234567890", qrcode.High) if err != nil { panic(err) }

// 获取终端字符串表示(用于调试) terminalStr := qr.ToQRTerminal() fmt.Println(terminalStr)

// 或者直接生成最小尺寸的PNG err = qr.WriteFile(128, "minimal_qrcode.png") if err != nil { panic(err) }}


纠错级别



go-qrcode支持四个纠错级别:



  • qrcode.Low — 恢复约7%的数据
  • qrcode.Medium — 恢复约15%的数据
  • qrcode.High — 恢复约25%的数据
  • qrcode.Highest — 恢复约30%的数据


级别越高,QR码越可靠,但尺寸也越大。对于大多数任务,建议使用Medium或High。



性能



go-qrcode库性能出色。生成一个中等大小的QR码(256x256像素)只需几毫秒。这使得它适用于高负载服务,包括API端点。



限制



尽管go-qrcode功能强大,但也有一些限制:



  • 不支持动画QR码
  • 不支持在QR码中心嵌入图像(但您可以在生成后手动添加)
  • 不支持Micro QR码格式


然而,对于95%的任务来说,这些限制并不重要。



结论



go-qrcode是Go语言中一个简单、可靠且快速的QR码生成库。它易于安装,具有清晰的API,并支持所有基本功能。如果您需要在Go项目中生成QR码,强烈推荐使用这个库。



在PythonLib网站上,您可以找到更多关于Go和其他编程语言的库和工具的有用文章。

推荐