Go语言实战案例 — 工具开发篇:Go 实现二维码生成器

二维码作为信息传递的载体,已经广泛应用在支付、营销、门票、WiFi 分享等场景中。Go 标准库虽然没有直接支持二维码,但通过第三方库我们可以非常方便地实现一个二维码生成器工具

这一篇我们就来带你一步一步完成一个支持文本/URL 转二维码、可自定义大小和输出格式的命令行工具。


功能目标

  • 输入字符串(如 URL、文本),生成对应二维码。
  • 支持输出 PNG 格式图片。
  • 可指定二维码尺寸(默认 256x256)。
  • 支持命令行运行,参数简单易懂。
  • 可扩展:支持 Logo 嵌入、颜色定制。

技术选型

  • 第三方库:

  • 命令行解析:使用 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)
}

使用方法

  1. 初始化项目并安装依赖:
bash 复制代码
go mod init qrcode-gen
go get github.com/skip2/go-qrcode
  1. 构建可执行文件:
bash 复制代码
go build -o qrcode-gen main.go
  1. 运行示例:
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,可以用微信/支付宝扫描。

扩展功能(进阶)

  1. Logo 嵌入:在二维码中间加一个小图标(例如品牌 Logo)。
  2. 颜色定制:支持前景色、背景色自定义。
  3. 批量生成:读取一个 CSV/文本文件,为每一行生成一个二维码。
  4. Web 服务版:提供一个 HTTP API,接收参数并返回二维码图片。

总结

通过 go-qrcode 库,我们几行代码就实现了一个二维码生成器工具:

  • 支持命令行参数
  • 输出 PNG 图片
  • 可指定尺寸
  • 可快速集成到自动化脚本或 Web 服务

相关推荐
掘金者阿豪40 分钟前
🚀 CentOS Stream 9服务器Docker部署KWDB:从零到跨模查询实战全记录
后端
yang_xin_yu1 小时前
一文带你精通泛型PECS原则与四大核心函数式接口
后端
孟陬1 小时前
国外技术周刊 #1:Paul Graham 重新分享最受欢迎的文章《创作者的品味》、本周被划线最多 YouTube《如何在 19 分钟内学会 AI》、为何我不
java·前端·后端
树獭叔叔1 小时前
13-KV Cache与位置编码表:大模型推理加速的核心技术
后端·aigc·openai
想用offer打牌1 小时前
一站式了解四种限流算法
java·后端·go
嘻哈baby1 小时前
用 C++ 写线程池是怎样一种体验?
后端
嘻哈baby1 小时前
SQL Server 和 Oracle 以及 MySQL 有哪些区别?
后端
绝无仅有1 小时前
Redis过期删除与内存淘汰策略详解
后端·面试·架构
武子康1 小时前
大数据-237 离线数仓 - Hive 广告业务实战:ODS→DWD 事件解析、广告明细与转化分析落地
大数据·后端·apache hive
绝无仅有1 小时前
Redis大Key问题排查与解决方案全解析
后端·面试·架构