溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

怎么用go語言編程實(shí)現(xiàn)二維碼生成及識(shí)別

發(fā)布時(shí)間:2022-04-29 10:07:35 來源:億速云 閱讀:576 作者:iii 欄目:開發(fā)技術(shù)

本文小編為大家詳細(xì)介紹“怎么用go語言編程實(shí)現(xiàn)二維碼生成及識(shí)別”,內(nèi)容詳細(xì),步驟清晰,細(xì)節(jié)處理妥當(dāng),希望這篇“怎么用go語言編程實(shí)現(xiàn)二維碼生成及識(shí)別”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學(xué)習(xí)新知識(shí)吧。

安裝 go-qrcode

我們不得不慶幸go的生態(tài)已經(jīng)越來越豐富,有很多大牛已經(jīng)幫我們寫好了庫,我們不必造輪子,直接拿過來用就好。

首先,我們安裝我們用到的go-qrcode庫。

go get -u github.com/skip2/go-qrcode/…

生成普通二維碼

使用了這個(gè)庫,你會(huì)發(fā)現(xiàn)二維碼生成原來是如此的簡(jiǎ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")
}

怎么用go語言編程實(shí)現(xiàn)二維碼生成及識(shí)別

這樣我們就可以生成了一個(gè)二維碼。

我們首先看下func WriteFile(content string, level RecoveryLevel, size int, filename string) error的參數(shù)。

  • content string 簡(jiǎn)單明了,這個(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í)現(xiàn)二維碼生成及識(shí)別”文章已經(jīng)介紹完畢,想要掌握這篇文章的知識(shí)點(diǎn)還需要大家自己動(dòng)手實(shí)踐使用過才能領(lǐng)會(huì),如果想了解更多相關(guān)內(nèi)容的文章,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI