美文网首页📙Go语言:进阶大全
Go语言:解析二维码(目前唯一一个不会出问题的)

Go语言:解析二维码(目前唯一一个不会出问题的)

作者: 白祤星 | 来源:发表于2019-11-11 18:22 被阅读0次

说明:


  • 由于 GitHub 上没有一个 第三方库 可以 解析二维码完全不出问题
    • 问题 1:截断,没有解析完全
    • 问题 2:直接无法解析
  • 所以本人 白祤星 通过 站长之家接口 自己做了一个 解析二维码 的实例
  • 这个也可以叫 二维码解码
  • 暂时先将就着用吧

代码实例:


package main

import (
    "bytes"
    "io"
    "io/ioutil"
    "mime/multipart"
    "net/http"
    "os"
)

func main() {
    // 输入解析的图片,返回解析好的数据
    url := qrcodeDecode(`qr1.png`)
    println(url)
}

// 二维码解码
// 参数:要解析的图片
func qrcodeDecode(img string) string {
    fh, err := os.Open(img)
    panicErr(err)
    defer fh.Close()

    bodyBuf := &bytes.Buffer{}
    bodyWriter := multipart.NewWriter(bodyBuf)
    bodyWriter.WriteField(`Filename`, fh.Name())
    bodyWriter.WriteField(`Upload`, `Submit Query`)

    fileWriter, err := bodyWriter.CreateFormFile(`Filedata`, img)
    panicErr(err)

    _, err = io.Copy(fileWriter, fh)
    panicErr(err)

    contentType := bodyWriter.FormDataContentType()
    bodyWriter.Close()

    resp, err := http.Post(`http://tool.chinaz.com/ajaxseo.aspx?t=pload`, contentType, bodyBuf)
    resp_body, err := ioutil.ReadAll(resp.Body)
    panicErr(err)
    defer resp.Body.Close()

    str := string(resp_body)
    str_len := len(str)
    return str[35 : str_len-7]
}

// 统一处理错误函数
func panicErr(err error) {
    if err != nil {
        panic(err)
    }
}

相关文章

网友评论

    本文标题:Go语言:解析二维码(目前唯一一个不会出问题的)

    本文链接:https://www.haomeiwen.com/subject/qlxxictx.html