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

字節(jié)流二維碼
在一些場景中可能不想直接生成圖片進(jìn)行存儲或者在網(wǎng)絡(luò)上傳輸時(shí)使用字節(jié)流可以更加方便且高效,所以可以使用 Encode 函數(shù)生成一個(gè)圖片字節(jié)流。
func Encode(content string, level RecoveryLevel, size int) ([]byte, error)
所以生成一個(gè)二維碼其實(shí)很簡單,直接使用第三方庫go-qrcode 就可以完成簡單的二維碼生成。其也支持對它設(shè)置背景色和前景色。在一些網(wǎng)絡(luò)傳輸可以使用生成二維碼字節(jié)流進(jìn)行傳輸,也可以使用字節(jié)流進(jìn)行存儲可以節(jié)省空間。
識別二維碼
golang 可以生成二維碼自然也可以識別二維碼。可以使用庫 github.com/tuotoo/qrcode。識別二維碼原理就是打開一張圖片,然后使用 Decode方法對圖片進(jìn)行解析,這樣就可以解析出來二維碼中 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è)置了幾個(gè)隨機(jī)內(nèi)容,類似刮獎(jiǎng),然后一個(gè)人隨機(jī)生成一個(gè)二維碼,看誰掃出最終結(jié)果就勝利的游戲。一個(gè)簡單的新春游戲就誕生啦。
到此這篇關(guān)于Go語言實(shí)現(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)置的一個(gè)包,這個(gè)包提供了對重復(fù)函數(shù)調(diào)用的抑制功能,所以下面我們就來看看如何使用它解決并發(fā)重復(fù)請求吧2023-08-08
GO 語言運(yùn)行環(huán)境的基礎(chǔ)知識
這篇文章主要介紹了GO 語言運(yùn)行環(huán)境的基礎(chǔ)知識的相關(guān)資料,需要的朋友可以參考下2022-09-09
Golang使用channel實(shí)現(xiàn)一個(gè)優(yōu)雅退出功能
最近補(bǔ)?Golang?channel?方面八股的時(shí)候發(fā)現(xiàn)用?channel?實(shí)現(xiàn)一個(gè)優(yōu)雅退出功能好像不是很難,之前寫的?HTTP?框架剛好也不支持優(yōu)雅退出功能,于是就參考了?Hertz?優(yōu)雅退出方面的代碼,為我的?PIANO?補(bǔ)足了這個(gè)?feature2023-03-03
利用GoLang?Fiber進(jìn)行高性能Web開發(fā)實(shí)例詳解
這篇文章主要為大家介紹了利用GoLang?Fiber進(jìn)行高性能Web開發(fā)實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2024-01-01
go module構(gòu)建項(xiàng)目的實(shí)現(xiàn)
本文主要介紹了go module構(gòu)建項(xiàng)目的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-03-03

