說(shuō)明:
- 由于
GitHub
上沒(méi)有一個(gè) 第三方庫(kù)
可以 解析二維碼完全不出問(wèn)題
- 問(wèn)題 1:
截?cái)啵瑳](méi)有解析完全
- 問(wèn)題 2:
直接無(wú)法解析
- 所以本人
白祤星
通過(guò) 站長(zhǎng)之家
的 接口
自己做了一個(gè) 解析二維碼
的實(shí)例
- 這個(gè)也可以叫
二維碼解碼
暫時(shí)先將就著用吧
代碼實(shí)例:
package main
import (
"bytes"
"io"
"io/ioutil"
"mime/multipart"
"net/http"
"os"
)
func main() {
// 輸入解析的圖片尼酿,返回解析好的數(shù)據(jù)
url := qrcodeDecode(`qr1.png`)
println(url)
}
// 二維碼解碼
// 參數(shù):要解析的圖片
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]
}
// 統(tǒng)一處理錯(cuò)誤函數(shù)
func panicErr(err error) {
if err != nil {
panic(err)
}
}
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者