go語言編程二維碼生成及識(shí)別
我們?cè)谧鰃o web開發(fā)的時(shí)候,應(yīng)該都遇到生成二維碼分享的應(yīng)用場(chǎng)景,下面我將介紹下使用go如何生成二維碼。
安裝 go-qrcode
我們不得不慶幸go的生態(tài)已經(jīng)越來越豐富,有很多大牛已經(jīng)幫我們寫好了庫,我們不必造輪子,直接拿過來用就好。
首先,我們安裝我們用到的go-qrcode庫。
https://github.com/skip2/go-qrcode/
go get -u github.com/skip2/go-qrcode/…
生成普通二維碼
使用了這個(gè)庫,你會(huì)發(fā)現(xiàn)二維碼生成原來是如此的簡單,現(xiàn)在我們就來演示一下。
package main
import "github.com/skip2/go-qrcode"
func main() {
qrcode.WriteFile("https://blog.csdn.net/yang731227",qrcode.Medium,256,"./qrcode.png")
}

這樣我們就可以生成了一個(gè)二維碼。
我們首先看下func WriteFile(content string, level RecoveryLevel, size int, filename string) error的參數(shù)。
- content string 簡單明了,這個(gè)是二維碼內(nèi)容
- level RecoveryLevel 這個(gè)是二維碼容錯(cuò)等級(jí),取值有Low、Medium、High、Highest。
- size int 不用說都知道這個(gè)是定義二維碼大小
- filename string 二維碼的保存路徑
生成有前后背景顏色的二維碼
剛剛我們生成了一個(gè)前黑后白的二維碼,這次我們想搞點(diǎn)花樣,生成一個(gè)花花綠綠的二維碼,我們直接上代碼
package main
import (
"github.com/skip2/go-qrcode"
"image/color"
)
func main() {
//qrcode.WriteFile("https://blog.csdn.net/yang731227",qrcode.High,200,"./qrcode.png")
qrcode.WriteColorFile("https://blog.csdn.net/yang731227", qrcode.High, 256, color.Black, color.White, "./qrcode.png")
}
我們來看下func WriteColorFile(content string, level RecoveryLevel, size int, background, foreground color.Color, filename string) error的參數(shù),比WriteFile 多了兩個(gè)參數(shù) background, foreground color.Color 。我們可以從字面意思就知道,background 是背景顏色,foreground是前景顏色。
顏色我們可以使用 color定義 ,它為我們定義了兩個(gè)默認(rèn)顏色,Black和White。如果我們想用其他顏色怎么辦呢?它為我們提供了color.RGBA() 這個(gè)方法,RGBA()有4個(gè)參數(shù) 分別是RGB的值和透明值。
例如:
package main
import (
"github.com/skip2/go-qrcode"
"image/color"
)
func main() {
//qrcode.WriteFile("https://blog.csdn.net/yang731227",qrcode.High,200,"./qrcode.png")
qrcode.WriteColorFile("https://blog.csdn.net/yang731227", qrcode.High, 256, color.Black, color.White, "./qrcode.png")
}
識(shí)別二維碼
上面我們講了怎么生成二維,現(xiàn)在我們來實(shí)習(xí)解析二維碼,當(dāng)然我們還是需要借助別人寫的庫。
首先我們安裝庫
go get github.com/tuotoo/qrcode
然后我們直接上代碼
package main
import (
"fmt"
"os"
"github.com/tuotoo/qrcode"
)
func main() {
fi, err := os.Open("./qrcode.png")
if err != nil {
fmt.Println(err.Error())
return
}
defer fi.Close()
qrmatrix, err := qrcode.Decode(fi)
if err != nil {
fmt.Println(err.Error())
return
}
fmt.Println(qrmatrix.Content)
}
以上就是go語言編程二維碼生成及識(shí)別的詳細(xì)內(nèi)容,更多關(guān)于go語言二維碼生成識(shí)別的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
golang validator庫參數(shù)校驗(yàn)實(shí)用技巧干貨
這篇文章主要為大家介紹了validator庫參數(shù)校驗(yàn)實(shí)用技巧干貨,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步早日升職加薪2022-04-04
GoLang語法之標(biāo)準(zhǔn)庫fmt.Printf的使用
fmt包實(shí)現(xiàn)了類似C語言printf和scanf的格式化I/O,主要分為向外輸出內(nèi)容和獲取輸入內(nèi)容兩大部分,本文就來介紹一下GoLang語法之標(biāo)準(zhǔn)庫fmt.Printf的使用,感興趣的可以了解下2023-10-10
使用Golang實(shí)現(xiàn)加權(quán)負(fù)載均衡算法的實(shí)現(xiàn)代碼
這篇文章主要介紹了使用Golang實(shí)現(xiàn)加權(quán)負(fù)載均衡算法的實(shí)現(xiàn)代碼,詳細(xì)說明權(quán)重轉(zhuǎn)發(fā)算法的實(shí)現(xiàn),通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-09-09
golang 獲取當(dāng)前執(zhí)行程序路徑的操作
這篇文章主要介紹了golang 獲取當(dāng)前程序執(zhí)行路徑的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-12-12

