Go 生成静态二维码和动态二维码

在我们生活和工作中,会遇到很多需要用到二维码的地方。

二维码在很多场合使用,比如打开链接,扫码支付,扫码打开链接,扫码加好友等等。

今天我们使用go来生成一下二维码试试,我们可以用这个库来生成。

github.com/skip2/go-qrcode


1、生成静态二维码

比如我们经常用到的,扫码打开一个网页。

package main

import (
	"image/color"
	"log"

	"github.com/skip2/go-qrcode"
)

func main() {
	qr, err := qrcode.New("http://www.alingfeng.cn/", qrcode.Medium)
	if err != nil {
		log.Fatal(err)
	} else {
		qr.BackgroundColor = color.RGBA{255, 255, 255, 255}
		qr.ForegroundColor = color.Black
		qr.WriteFile(256, "./go_code.png")
	}


}

运行一下,就可以看到我们的二维码图片


2、生成动态二维码

也有很多时候我们会用到动态的二维码,如扫码支付,扫码打开链接,扫码加好友等,结合http 库,动态生成qrcode 并返回。而无需保存成图片。

package main

import (
	"fmt"
	"log"
	"net/http"
	"time"

	"github.com/skip2/go-qrcode"
)

func main() {
	http.HandleFunc("/qrcode", Qrcode)
	log.Fatal(http.ListenAndServe(":8008", nil))
}

func Qrcode(w http.ResponseWriter, req *http.Request) {
	var err error
	defer func() {
		if err != nil {
			w.WriteHeader(500)
			return
		}
	}()
	q, err := qrcode.New(fmt.Sprintf("http://www.alingfeng.cn/?t=%d", time.Now().Unix()), qrcode.Medium)
	if err != nil {
		return
	}
	png, err := q.PNG(256)
	if err != nil {
		return
	}
	w.Header().Set("Content-Type", "image/png")
	w.Header().Set("Content-Length", fmt.Sprintf("%d", len(png)))
	w.Write(png)
}

然后我们访问地址就可以看到图片: 127.0.0.1:8008/qrcode,每刷新一下二维码会相应变化。

点赞2
点击评论0
收藏1
浏览 70
 

还没有评论,快来发表第一个评论吧

免责声明:凡在本网站出现的信息,均仅供参考。本网站将尽力确保所提供信息的准确性及可靠性,但不保证有关资料的准确性及可靠性,注册用户和一般页面游览者在使用前请进一步核实,并对任何自主决定的行为负责。本网站对有关资料所引致的错误、不确或遗漏,概不负任何法律责任(包括侵权责任、合同责任和其它责任)
*尊重作者,转载请注明出处!

创作内容

开启你的爱凌峰创作之旅

发布首篇内容,开通创作中心
快来成为爱凌峰创作者吧~

写文章

板块热门【Golang】