Go语言生成二维码的示例🚀

关于Go语言生成二维码的示例代码和技巧,咱们用分步拆解的方式讲解,并附上可直接运行的代码片段。以下内容适合需要快速上手的开发者,包含基础用法、自定义样式和实战技巧👇
一、快速入门:生成你的第一个二维码
- 安装核心库
Go语言生成二维码推荐使用go-qrcode
库,执行以下命令安装:
go get -u github.com/skip2/go-qrcode
- 基础代码(生成URL二维码)
package main
import "github.com/skip2/go-qrcode"
func main() {
// 生成二维码并保存为PNG文件
err := qrcode.WriteFile(
"https://github.com", // 二维码内容(支持中文)
qrcode.Medium, // 容错级别:Low/Medium/High/Highest
256, // 图片尺寸(像素)
"my_qrcode.png", // 输出文件名
)
if err != nil {
panic(err)
}
}
效果说明:
- 生成一个256x256像素的二维码图片
- 扫描后会跳转至Git官网
- 容错级别建议选
Medium
,平衡尺寸与抗损能力
二、自定义样式:让二维码更个性
- 修改颜色(红底白码)
qr, err := qrcode.New("Hello World", qrcode.High)
qr.BackgroundColor = color.RGBA{255, 0, 0, 255} // 红色背景
qr.ForegroundColor = color.White // 白色前景
qr.WriteFile(256, "color_qr.png")
- 添加Logo(品牌标识)
package main
import (
"github.com/nfnt/resize"
"github.com/skip2/go-qrcode"
"image"
"image/draw"
"image/png"
"os"
)
func main() {
// 生成二维码并保存为PNG文件
logoImg, _ := os.Open("site_logo.png")
defer logoImg.Close()
// 将Logo缩放至二维码尺寸的1/4并居中
logo, _, _ := image.Decode(logoImg)
logo = resize.Resize(42, 42, logo, resize.Lanczos3)
qr, err := qrcode.New("Hello World", qrcode.High)
if err != nil {
panic(err)
}
qrcodeImg := qr.Image(256)
outImg := image.NewRGBA(qrcodeImg.Bounds())
draw.Draw(outImg, outImg.Bounds(), qrcodeImg, image.Pt(0, 0), draw.Over)
offset := image.Pt((outImg.Bounds().Max.X-logo.Bounds().Max.X)/2, (outImg.Bounds().Max.Y-logo.Bounds().Max.Y)/2)
draw.Draw(outImg, outImg.Bounds().Add(offset), logo, image.Pt(0, 0), draw.Over)
// 保存带Logo的二维码
file, _ := os.Create("qr_with_logo.png")
png.Encode(file, outImg)
}
技巧:Logo建议使用纯色背景,避免干扰扫码识别
三、避坑指南:常见问题解决
-
中文乱码问题
- 确保内容字符串为UTF-8编码
- 复杂内容建议先进行URL编码
-
大尺寸生成缓慢
- 超过1024像素时,优先提升容错级别而非尺寸
- 使用
go routines
并发生成多个二维码
-
依赖冲突处理
- 若同时使用多个图像库,注意
image/draw
包的导入路径
- 若同时使用多个图像库,注意
五、总结
通过go-qrcode
库,只需10行代码即可生成专业级二维码。无论是支付码、活动海报还是API接口,Go都能轻松应对。
动手试试吧!遇到问题欢迎留言讨论~ 🚀
