如何使用Golang实现二维码生成器_生成并保存二维码图片

Go语言可用skip2/go-qrcode库命令行生成二维码:支持中文、纠错等级、自定义尺寸/颜色/透明背景,WriteFile保存PNG/JPEG,WriteColorFile支持前景色与透明底,适合批量生成。

用 Go 语言生成并保存二维码图片,核心是借助成熟的第三方库(如 qrcode),几行代码就能完成——无需图形界面,纯命令行即可输出 PNG 或 JPEG 文件。

安装依赖库

推荐使用轻量、稳定、支持中文的 github.com/skip2/go-qrcode

  • 运行命令安装:go get github.com/skip2/go-qrcode
  • 该库基于 QR Code ISO/IEC 18004 标准,支持纠错等级(L/M/Q/H)、自定义尺寸、颜色及文件导出

基础生成与保存示例

以下代码生成内容为 "Hello, 世界" 的二维码,保存为 qrcode.png

package main

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

func main() {
    err := qrcode.WriteFile("Hello, 世界", qrcode.Medium, 256, "qrcode.png")
    if err != nil {
        log.Fatal(err)
    }
}
  • qrcode.Medium 表示纠错等级(中等,约15%容错);可选 Low/High/Quartile
  • 256 是输出图片宽高(像素),正方形尺寸,最小建议 256 起以保证清晰度
  • "qrcode.png" 支持 .png.jpg 后缀,自动识别格式

进阶:自定义颜色与透明背景

若需修改前景色(二维码模块)或背景色,可用 qrcode.WriteColorFile

import "image/color"

err := qrcode.WriteColorFile(
    "https://golang.org",
    qrcode.Medium,
    300,
    &color.RGBA{0, 128, 255, 255}, // 前景色:蓝色
    &color.RGBA{255, 255, 255, 0}, // 背景色:完全透明(alpha=0)
    "custom_qr.png",
)
  • 第5个参数为背景色,设为 &color.RGBA{255,255,255,0} 可得透明底 PNG(注意仅 PNG 支持透明)
  • 确保目标路径有写入权限,否则 WriteFile 会返回 permission denied

批量生成与文件名控制

实际应用中常需按内容生成多个二维码,例如从 CSV 或命令行参数读取:

  • flag 包接收输入:go run main.go -text "user-123" -output "user123.png"
  • 循环生成时注意避免文件名冲突,建议对原始文本做简单哈希或编码(如 url.PathEscape
  • 大尺寸(如 1024×1024)时内存占用略增,但普通用途无压力