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,每刷新一下二维码会相应变化。
还没有评论,快来发表第一个评论吧