1. 云栖社区>
  2. >
  3. 正文

go web 生成二维码

作者:用户 来源:互联网 时间:2018-08-31 14:27:34

web二维码go

go web 生成二维码 - 摘要: 本文讲的是go web 生成二维码, go web 生成二维码 时间有限写的比较简陋 抛砖引玉 package main import (     "bytes"     bs "encoding/base64"     "fmt"

go web 生成二维码 时间有限写的比较简陋 抛砖引玉

package main

import (
    "bytes"
    bs "encoding/base64"
    "fmt"
    "image"
    "image/png"
    "log"
    "net/http"
    "github.com/boombuler/barcode"
    "github.com/boombuler/barcode/qr"
)
func makeqrcode(base641 string) image.Image {
    log.Println("Original data:", base641)
    code, err := qr.Encode(base641, qr.L, qr.Unicode)
    // code, err := code39.Encode(base64)
    if err != nil {
        log.Fatal(err)
    }
    if base641 != code.Content() {
        log.Fatal("data differs")
    }
    code, err = barcode.Scale(code, 300, 300)
    if err != nil {
        log.Fatal(err)
    }
    return code
}
func main() {
    http.HandleFunc("/", qrcode) //设置访问的路由
    err1 := http.ListenAndServe(":80", nil)
    if err1 != nil {
        log.Fatal("ListenAndServe:", err1)
    }
}
func qrcode(w http.ResponseWriter, req *http.Request) {
    req.ParseForm()
    param, _ := req.Form["str"]
    if param == nil {
        fmt.Printf("1a")
        http.Redirect(w, req, "/?str=", http.StatusFound)
    } else {
        base641 := param[0]
        img := makeqrcode(base641)
        emptyBuff := bytes.NewBuffer([]byte{})         //开辟一个新的空buff
        png.Encode(emptyBuff, img)                     //img写入到buff
        dist := make([]byte, 50000)                    //开辟存储空间
        bs.StdEncoding.Encode(dist, emptyBuff.Bytes()) //buff转成base64
        n := 0
        for i := 0; i < len(dist); i++ {
            if dist[i] == 0 {
                n = i
                break
            }
        }
        str := string(dist[:n])
        fmt.Println(str)
        fmt.Println(len(str))
        ls1 := "<!DOCTYPE html><head><meta charset='utf-8' /></head><body><img src='data:image/png;base64,"
        ls2 := "'/></body></html>"
        ls := ls1 + str + ls2
        fmt.Fprintf(w, ls)
    }
}
 
  

以上是云栖社区小编为您精心准备的的内容,在云栖社区的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索web , 二维码 go ,以便于您获取更多的相关知识。