• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

golang中生成读取二维码(skip2/go-qrcode和boombuler/barcode,tuotoo/qrcode) ...

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

 1 引言

在github上有好用golan二维码生成和读取库,两个生成二维码的qrcode库和一个读取qrcode库。

skip2/go-qrcode生成二维码,github地址:https://github.com/skip2/go-qrcode

boombuler/barcode生成二维码,github地址:https://github.com/boombuler/barcode 

tuotoo/qrcode解析二维码,github地址:https://github.com/tuotoo/qrcode

 

2 代码

import (
   "image/png"
   "os"
   "github.com/boombuler/barcode"
   "github.com/boombuler/barcode/qr"
   "github.com/skip2/go-qrcode"
   qrcodeReader "github.com/tuotoo/qrcode"
   "fmt"
)

func main() {

   content := "https://www.cnblogs.com/fanbi"
   size := 200

   //Skip2
   dest := "qrcode.png"
   CreateQRCodeBySkip2(content, qrcode.Medium, size, dest)
   fmt.Println("QRCodeBySkip2 content",ReadQRCode(dest))

   //Boombuler
   dest2 := "qrcode2.png"
   CreateQRCodeByBoombuler(content, qr.M, size, dest2)
   fmt.Println("QRCodeBySBoombule content",ReadQRCode(dest2))

   //输出
   //QRCodeBySkip2 content https://www.cnblogs.com/fanbi
   //QRCodeBySBoombule content https://www.cnblogs.com/fanbi

}

func CreateQRCodeBySkip2(content string, quality qrcode.RecoveryLevel, size int, dest string) (err error) {
   err = qrcode.WriteFile(content, quality, size, dest)
   return
}

func CreateQRCodeByBoombuler(content string, quality qr.ErrorCorrectionLevel, size int, dest string) (err error) {
   qrCode, err := qr.Encode(content, quality, qr.Auto)
   if err != nil {
      return
   }

   // Scale the barcode to 200x200 pixels
   qrCode, err = barcode.Scale(qrCode, size, size)
   if err != nil {
      return
   }

   // create the output file
   file, err := os.Create(dest)
   if err != nil {
      return
   }

   defer file.Close()
   // encode the barcode as png
   err = png.Encode(file, qrCode)
   if err != nil {
      return
   }

   return
}

func ReadQRCode(filename string) (content string) {
   fi, err := os.Open(filename)
   if err != nil {
      fmt.Println(err.Error())
      return
   }
   defer fi.Close()
   qrmatrix, err := qrcodeReader.Decode(fi)
   if err != nil {
      fmt.Println(err.Error())
      return
   }
   return qrmatrix.Content
}

效果图:

qrcode.png

qrcode2.png

 说明:第二种生成的二维码会更好,图片的四周白边占比小。

 

3 参考

https://blog.csdn.net/wangshubo1989/article/details/77897363  

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
[GO]gocontext的deadline方法发布时间:2022-07-10
下一篇:
GO_00:Mac之Item2的配置安装发布时间:2022-07-10
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap