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都能轻松应对。
动手试试吧!遇到问题欢迎留言讨论~ 🚀
🛒 站长推荐(京东联盟)
- 《Go 程序设计语言》(Go 语言圣经,机械工业出版社) —— Go 官方团队出品,公认入门第一书
- 《Go 语言实战》(异步图书,人民邮电出版社) —— 实战导向,面试前巩固工程手感
- 《Go 语言编程之旅:一起用 Go 做项目》(博文视点,电子工业出版社) —— 项目驱动入门,从零写出完整应用
- Keychron K1Max 矮轴机械键盘(Mac/Win 双系统,QMK/VIA 开源改键) —— 轻薄矮轴 + 开源固件,程序员桌面常客
- 罗技 MX Master 3S 无线鼠标(Flow 跨屏,静音电磁滚轮) —— 人体工学设计,写代码一整天手不酸
以上链接含京东联盟推广代码;通过链接购买本站可能获得少量佣金,不影响你的购买价格。
📮 关注公众号「GO语言入门之路」
每周更新 Go + AI 应用开发实战:AI 面试官完整项目、MCP、Agent 工程化,完整源码随文章首发。
微信扫码,或搜索「GO语言入门之路」关注,第一时间获取系列更新与源码,不再错过任何一篇。