使用Go語言實現(xiàn)一個二維碼生成器
引言
二維碼作為信息傳遞的載體,已經(jīng)廣泛應(yīng)用在支付、營銷、門票、WiFi 分享等場景中。Go 標(biāo)準(zhǔn)庫雖然沒有直接支持二維碼,但通過第三方庫我們可以非常方便地實現(xiàn)一個二維碼生成器工具。
這一篇我們就來帶你一步一步完成一個支持文本/URL 轉(zhuǎn)二維碼、可自定義大小和輸出格式的命令行工具。
功能目標(biāo)
- 輸入字符串(如 URL、文本),生成對應(yīng)二維碼。
- 支持輸出 PNG 格式圖片。
- 可指定二維碼尺寸(默認(rèn) 256x256)。
- 支持命令行運行,參數(shù)簡單易懂。
- 可擴展:支持 Logo 嵌入、顏色定制。
技術(shù)選型
第三方庫:
- https://github.com/skip2/go-qrcode—— 簡單易用的二維碼生成庫。
命令行解析:使用 Go 標(biāo)準(zhǔn)庫 flag。
項目結(jié)構(gòu)
qrcode-gen/ ├── main.go ├── go.mod
完整代碼(main.go)
package main
import (
"flag"
"fmt"
"os"
"github.com/skip2/go-qrcode"
)
func main() {
// 命令行參數(shù)
content := flag.String("text", "https://golang.org", "需要生成二維碼的內(nèi)容")
output := flag.String("out", "qrcode.png", "輸出文件路徑")
size := flag.Int("size", 256, "二維碼尺寸(像素)")
flag.Parse()
if *content == "" {
fmt.Println("? 內(nèi)容不能為空,請使用 -text 參數(shù)指定要生成二維碼的內(nèi)容")
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)
}
使用方法
- 初始化項目并安裝依賴:
go mod init qrcode-gen go get github.com/skip2/go-qrcode
- 構(gòu)建可執(zhí)行文件:
go build -o qrcode-gen main.go
- 運行示例:
# 生成默認(rèn)二維碼 ./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 嵌入:在二維碼中間加一個小圖標(biāo)(例如品牌 Logo)。
- 顏色定制:支持前景色、背景色自定義。
- 批量生成:讀取一個 CSV/文本文件,為每一行生成一個二維碼。
- Web 服務(wù)版:提供一個 HTTP API,接收參數(shù)并返回二維碼圖片。
總結(jié)
通過 go-qrcode 庫,我們幾行代碼就實現(xiàn)了一個二維碼生成器工具:
- 支持命令行參數(shù)
- 輸出 PNG 圖片
- 可指定尺寸
- 可快速集成到自動化腳本或 Web 服務(wù)
到此這篇關(guān)于使用Go語言實現(xiàn)一個二維碼生成器的文章就介紹到這了,更多相關(guān)Go二維碼生成器內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
golang gin 監(jiān)聽rabbitmq隊列無限消費的案例代碼
這篇文章主要介紹了golang gin 監(jiān)聽rabbitmq隊列無限消費,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-12-12
golang標(biāo)準(zhǔn)庫SSH操作示例詳解
文章介紹了如何使用Golang的crypto/ssh庫實現(xiàn)SSH客戶端功能,包括連接遠程服務(wù)器、執(zhí)行命令、捕獲輸出以及與os/exec標(biāo)準(zhǔn)庫的對比,本文給大家介紹的非常詳細,感興趣的朋友一起看看吧2024-12-12

