Go語言實現(xiàn)新春祝福二維碼的生成
前言
二維碼現(xiàn)在是隨處度可以看到,買東西,支付,添加好友只要你掃一掃就能完成整個工作,簡單且方便。所以利用這個新春佳節(jié)做一個帶著新春祝福的二維碼。
簡單二維碼生成
Go 有一個 go-qrCode 庫可以很簡單的完成該項功能。首先需要下載該包。
go get github.com/skip2/go-qrcode
下載完之后就可以簡單創(chuàng)建一個 Go項目。
func main(){
qrcode.WriteFile("新年快樂", qrcode.Medium, 256, "./bestWish.png")
qrcode.WriteColorFile("新年快樂", qrcode.Medium, 256, color.RGBA{50, 205, 50, 255}, color.White, "./bestWish.png")
}簡單實用上面的代碼,就可以生成一個二維碼圖片,然后用手機掃一掃就能看到內(nèi)容。第二個方法可以生成一個帶有彩色背景的二維碼。
func WriteFile(content string, level RecoveryLevel, size int, filename string) error {
var q *QRCode
q, err := New(content, level)
if err != nil {
return err
}
return q.WriteFile(size, filename)
}用 WriteFile / WriteColorFile 函數(shù)就能完成二維碼生成,其中有4個參數(shù):
- content 生成二維碼的內(nèi)容,可以是任意字符串
- level 是二維碼容錯級別:有四個等級Low、Medium、High、Highest。
- size 是生成圖片的寬和高,像素單位
- filename 生成二維碼文件的路徑
- background 背景色 ,foreground 前景色

字節(jié)流二維碼
在一些場景中可能不想直接生成圖片進行存儲或者在網(wǎng)絡(luò)上傳輸時使用字節(jié)流可以更加方便且高效,所以可以使用 Encode 函數(shù)生成一個圖片字節(jié)流。
func Encode(content string, level RecoveryLevel, size int) ([]byte, error)
所以生成一個二維碼其實很簡單,直接使用第三方庫go-qrcode 就可以完成簡單的二維碼生成。其也支持對它設(shè)置背景色和前景色。在一些網(wǎng)絡(luò)傳輸可以使用生成二維碼字節(jié)流進行傳輸,也可以使用字節(jié)流進行存儲可以節(jié)省空間。
識別二維碼
golang 可以生成二維碼自然也可以識別二維碼??梢允褂脦?github.com/tuotoo/qrcode。識別二維碼原理就是打開一張圖片,然后使用 Decode方法對圖片進行解析,這樣就可以解析出來二維碼中 content 內(nèi)容。
fi, err := os.Open("bestWish.png")
if err != nil {
...
}
defer fi.Close()
qrmatrix, err := qrcode.Decode(fi) // 解析
if err != nil {
...
}
fmt.Println(qrmatrix.Content) // 輸出 content 內(nèi)容
新春二維碼很簡單的完成。于是新年家族活動中通過設(shè)置了幾個隨機內(nèi)容,類似刮獎,然后一個人隨機生成一個二維碼,看誰掃出最終結(jié)果就勝利的游戲。一個簡單的新春游戲就誕生啦。
到此這篇關(guān)于Go語言實現(xiàn)新春祝福二維碼的生成的文章就介紹到這了,更多相關(guān)Go語言生成祝福二維碼內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Golang使用singleflight解決并發(fā)重復(fù)請求
高并發(fā)的場景下,經(jīng)常會出現(xiàn)并發(fā)重復(fù)請求資源的情況,singleflight是golang內(nèi)置的一個包,這個包提供了對重復(fù)函數(shù)調(diào)用的抑制功能,所以下面我們就來看看如何使用它解決并發(fā)重復(fù)請求吧2023-08-08
Golang使用channel實現(xiàn)一個優(yōu)雅退出功能
最近補?Golang?channel?方面八股的時候發(fā)現(xiàn)用?channel?實現(xiàn)一個優(yōu)雅退出功能好像不是很難,之前寫的?HTTP?框架剛好也不支持優(yōu)雅退出功能,于是就參考了?Hertz?優(yōu)雅退出方面的代碼,為我的?PIANO?補足了這個?feature2023-03-03
利用GoLang?Fiber進行高性能Web開發(fā)實例詳解
這篇文章主要為大家介紹了利用GoLang?Fiber進行高性能Web開發(fā)實例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2024-01-01

