二维码作为信息传递的载体,已经广泛应用在支付、营销、门票、WiFi 分享等场景中。Go 标准库虽然没有直接支持二维码,但通过第三方库我们可以非常方便地实现一个二维码生成器工具。
这一篇我们就来带你一步一步完成一个支持文本/URL 转二维码、可自定义大小和输出格式的命令行工具。
功能目标
- 输入字符串(如 URL、文本),生成对应二维码。
- 支持输出 PNG 格式图片。
- 可指定二维码尺寸(默认 256x256)。
- 支持命令行运行,参数简单易懂。
- 可扩展:支持 Logo 嵌入、颜色定制。
技术选型
-
第三方库:
- github.com/skip2/go-qr... ------ 简单易用的二维码生成库。
-
命令行解析:使用 Go 标准库
flag
。
项目结构
go
qrcode-gen/
├── main.go
├── go.mod
完整代码(main.go)
go
package main
import (
"flag"
"fmt"
"os"
"github.com/skip2/go-qrcode"
)
func main() {
// 命令行参数
content := flag.String("text", "https://golang.org", "需要生成二维码的内容")
output := flag.String("out", "qrcode.png", "输出文件路径")
size := flag.Int("size", 256, "二维码尺寸(像素)")
flag.Parse()
if *content == "" {
fmt.Println("❌ 内容不能为空,请使用 -text 参数指定要生成二维码的内容")
os.Exit(1)
}
// 生成二维码
err := qrcode.WriteFile(*content, qrcode.Medium, *size, *output)
if err != nil {
fmt.Printf("❌ 生成二维码失败: %v\n", err)
os.Exit(1)
}
fmt.Printf("✅ 二维码已生成: %s\n", *output)
}
使用方法
- 初始化项目并安装依赖:
bash
go mod init qrcode-gen
go get github.com/skip2/go-qrcode
- 构建可执行文件:
bash
go build -o qrcode-gen main.go
- 运行示例:
bash
# 生成默认二维码
./qrcode-gen -text "https://github.com" -out github.png
# 指定大小
./qrcode-gen -text "Hello, QR!" -size 512 -out hello.png
运行效果
- 输入:
https://github.com
- 输出:一张名为
github.png
的二维码,尺寸为 256x256,可以用微信/支付宝扫描。
扩展功能(进阶)
- Logo 嵌入:在二维码中间加一个小图标(例如品牌 Logo)。
- 颜色定制:支持前景色、背景色自定义。
- 批量生成:读取一个 CSV/文本文件,为每一行生成一个二维码。
- Web 服务版:提供一个 HTTP API,接收参数并返回二维码图片。
总结
通过 go-qrcode
库,我们几行代码就实现了一个二维码生成器工具:
- 支持命令行参数
- 输出 PNG 图片
- 可指定尺寸
- 可快速集成到自动化脚本或 Web 服务