侧边栏壁纸
博主头像
微流 - 这里记录值得分享的内容

行动起来,活在当下

  • 累计撰写 16 篇文章
  • 累计创建 9 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录
Go

用Go语言轻松生成二维码

随着信息化的高速发展,二维码作为一种高效、便捷的信息载体,已经广泛应用于支付、营销、登录验证等场景。作为开发者,掌握生成二维码的能力可以为我们提供很多便捷的解决方案。今天,我们将通过Go语言来演示如何快速生成二维码,并展示其简洁的实现方式。

开始之前:准备工作

在Go语言中,生成二维码非常简单,我们可以借助一个第三方库 github.com/skip2/go-qrcode 来实现二维码的生成。这是一个功能强大且易于使用的二维码生成库,它可以生成不同尺寸、不同等级的二维码。

首先,我们需要通过Go的包管理工具来安装 go-qrcode 库:

go get -u github.com/skip2/go-qrcode/...

基本示例

生成二维码的过程十分直观,下面是一个简单的示例代码,生成包含“Hello, Go!”文本的二维码,并将其保存为图片文件。

package main
​
import (
    "github.com/skip2/go-qrcode"
    "log"
)
​
func main() {
    // 设置二维码内容和文件名
    content := "Hello, Go!"
    filename := "qr.png"
    
    // 生成二维码并保存为文件
    err := qrcode.WriteFile(content, qrcode.Medium, 256, filename)
    if err != nil {
        log.Fatal(err)
    }
​
    log.Println("二维码已生成,文件名为:", filename)
}
  • content :二维码要存储的信息,比如“Hello, Go!”,如果内容太长会出错。

  • 第二个参数为误差修正等级。具有较高恢复级别的 QR 码更不易损坏,但代价是物理尺寸更大。

    go-qrcode 提供了四种级别:

    • qrcode.Low:L等级,能容错7%。

    • qrcode.Medium:M等级,能容错15%。

    • qrcode.High:Q等级,能容错25%。

    • qrcode.Highest:H等级,能容错30%。

  • size 是图像的宽度和高度(以像素为单位)。如果尺寸太小,则会默默返回较大的图像。

输出为[]byte

有时候,我们可能并不希望直接生成并存储一个PNG文件,而是需要对生成的二维码图片进行一些额外的处理,例如缩放、旋转,或是直接通过网络进行传输。

go-qrcode库中,Encode函数的定义如下:

func Encode(content string, level RecoveryLevel, size int) ([]byte, error)

这个函数的用法与直接写入文件的WriteFile函数相似,不同之处在于它返回的是一个字节切片[]byte,而不是直接将内容写入磁盘。

示例:

var size = 256
png, err := qrcode.Encode("https://example.org", qrcode.Medium, size)

自定义二维码样式

除了生成简单的二维码外,go-qrcode 还提供了很多自定义功能。比如,我们可以调整二维码的颜色。

err := qrcode.WriteColorFile("https://example.org", qrcode.Medium, 256, color.Black, color.White, "qr.png")
  • 这会创建黑底白字而不是白底黑字的 QR 码。

结语

通过Go语言和 go-qrcode 库,生成二维码变得异常简单。无论是简单的文本信息,还是复杂的图像二维码,Go都能轻松胜任。如果你也想在项目中引入二维码生成功能,不妨尝试一下Go语言的实现方式。

1
  1. 支付宝打赏

    qrcode alipay
  2. 微信打赏

    qrcode weixin

评论区