导入barcode包

    "github.com/boombuler/barcode"
    "github.com/boombuler/barcode/qr"    

使用barcode库生成二维码

func main() {
    //定义二维码内容
    qrcode, _ := qr.Encode("https://www.cnblogs.com/hongyeci", qr.M, qr.Auto)
    //设置二维码的宽高
    qrcode, _ = barcode.Scale(qrcode, 256, 256)
    //创建qrcode.png文件
    file, _ := os.Create("qrcode2.png")
    //关闭文件流--defer-延迟关闭资源
    defer file.Close()
    //将二维码写入文件中
    if err := png.Encode(file, qrcode); err != nil {
        fmt.Println("生成二维码失败")
    } else {
        fmt.Println("生成二维码成功")
    }
}

这里复习一下defer关键字的主要用法:延迟执行,主要是关闭流时用到,在return之前执行,当有多个defer关键字时采用先进后出的方式执行;

使用qrcode库扫描二维码

导入qrcode包

"github.com/tuotoo/qrcode"

扫描二维码

func main()  {
    //打开二维码文件qrcode.png
    file,err:=os.Open("qrcode.png")
    if err!=nil {
        fmt.Println("error:",err.Error())
        return
    }
    //关闭文件流
    defer file.Close()
    //扫描二维码
    qrmatrix, err := qrcode.Decode(file)
    if err != nil {
        fmt.Println(err.Error())
        return
    }
    fmt.Println(qrmatrix.Content)
}

 

posted on 2020-10-13 10:24  红叶次  阅读(822)  评论(0)    收藏  举报