csdn 搜索解析和生成二维码 解析二维码 用方法二 斜的图片也可以识别 方法一的库不行(代码来源github与 csdn)
解析二维码推荐gozxing 支持斜的图片 github.com/tuotoo/qrcode 斜的解析不出来
b.png
图片有点模糊就解析不出来
比如这张图
1源码 "github.com/tuotoo/qrcode" 库 斜的解析不出来
package main
import (
"fmt"
"os"
"github.com/skip2/go-qrcode"
qrcodedec "github.com/tuotoo/qrcode"
)
func main() {
generateQrcode()
decodeQrcode()
}
func generateQrcode() {
err := qrcode.WriteFile("http://blog.csdn.net/wangshubo1989", qrcode.Medium, 256, "qr.png")
if err != nil {
fmt.Println("write error")
}
}
func decodeQrcode() {
fi, err := os.Open("b.png")
if err != nil {
fmt.Println(err.Error())
return
}
defer fi.Close()
qrmatrix, err := qrcodedec.Decode(fi)
if err != nil {
fmt.Println(err.Error())
return
}
fmt.Println(qrmatrix.Content)
}
2源码 gozxing库 斜的图片可以解析出来
package main
import (
"fmt"
"image"
_ "image/gif"
_ "image/jpeg"
_ "image/png"
"io"
"log"
"os"
"path/filepath"
"github.com/makiuchi-d/gozxing"
"github.com/makiuchi-d/gozxing/qrcode"
)
func main() {
dir, err := filepath.Abs(filepath.Dir(os.Args[0]))
if err != nil {
log.Fatal(err)
}
fmt.Println(dir)
fi, err := os.Open("qrcode_xie3.png")
if err != nil {
fmt.Println(err.Error())
return
}
defer fi.Close()
text := decodeQRcode(fi)
fmt.Println("text:%s",text)
}
func decodeQRcode(fi io.Reader) (paymentCodeUrl *gozxing.Result) {
img, _, err := image.Decode(fi)
if err != nil {
fmt.Println(err)
}
// prepare BinaryBitmap
bmp, _ := gozxing.NewBinaryBitmapFromImage(img)
// decode image
qrReader := qrcode.NewQRCodeReader()
result, err := qrReader.Decode(bmp, nil)
if err != nil {
fmt.Println(err)
}
return result
}