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  

golang中生成读取二维码(skip2/go-qrcode和boombuler/barcode,tuotoo/qrcode)的更多相关文章

  1. pbfunc外部函数扩展应用-直接在Datawindow中生成QR二维码,非图片方式

    利用pbfunc外部函数在Datawindow中直接生成QR二维码,非图片方式.需要注意以下面几点: Datawindow的DataObject的单位必须为像素(Pixels). Datawindow ...

  2. laravel中生成支付宝 二维码 扫码支付

    文档教程模拟: http://www.023xs.cn/Article/37/laravel5%E9%9B%86%E6%88%90%E6%94%AF%E4%BB%98%E5%AE%9Dalipay%E ...

  3. ZXing 生成、读取二维码(带logo)

    前言 ZXing,一个支持在图像中解码和生成条形码(如二维码.PDF 417.EAN.UPC.Aztec.Data Matrix.Codabar)的库.ZXing(“zebra crossing”)是 ...

  4. Swift3.0生成二维码、扫描二维码、相册读取二维码,兼容iOS7(结合ZXingObjC)

    二维码生成 //MARK: 传进去字符串,生成二维码图片(>=iOS7) text:要生成的二维码内容 WH:二维码高宽 private func creatQRCodeImage(text: ...

  5. 【java】google的zxing架包生成二维码和读取二维码【可带文字和logo】

    承接RC4生成不重复字符串的需求之后,因为优惠码要方便用户使用的缘故,所以思来想去,觉得还是直接生成二维码给用户直接扫比较实用,也不用用户专门记录冗长的优惠码编号. ================= ...

  6. ZXing生成二维码、读取二维码

    使用谷歌的开源包ZXing maven引入如下两个包即可 <dependency>   <groupId>com.google.zxing</groupId>  & ...

  7. jquery-qrcode 生成和读取二维码

    首先要导入jar包(生成二维码的jar和读取二维码的jar) 生成二维码: package com.imooc.qrcode; import java.awt.Color; import java.a ...

  8. zxing生成二维码和读取二维码

    当然,首先要导入zxing的jar包. 生成二维码代码: package com.imooc.zxing; import java.io.File; import java.nio.file.Path ...

  9. [AX2012 R3]在SSRS报表中使用QR二维码

    AX2012是自带生成QR二维码的类,可以很方便的用在SSRS报表中,下面演示如何在RDP的报表中使用二维码,首先从定义临时表开始: 字段URL是要用于二维码的字符串,QrCode是container ...

随机推荐

  1. 【Gamma】Scrum Meeting 1

    目录 写在前面 gamma阶段角色更换 进度情况 任务进度表 Gamma阶段燃尽图 遇到的困难 照片 代码Commit记录 后端 前端 写在前面 例会时间:5.25 22:30-23:00 例会地点: ...

  2. ruby-on-rails-BUG

    Ruby on Rails errors: (新手期) rails 自动化部署教程 Q1: rvm 无法使用 $ rvm use 1.9.3 --default RVM is not a functi ...

  3. 安装tensorflow-gpu2.0(windows)

    anaconda安装见前一篇https://www.cnblogs.com/wintersoft/p/11609188.html https://mirrors.tuna.tsinghua.edu.c ...

  4. 颜色空间模型(HSV\LAB\RGB\CMYK)

    通过Photoshop的拾色器,我们知道表征颜色的模型的不止一种,本文将系统并且详细讨论这四种模型(HSV.LAB.RGB和CMYK)之间的联系以及应用.本文部分章节整合了多位优秀博主的博客(链接见本 ...

  5. tomcat中文乱码

    1. https://blog.csdn.net/qq_35038153/article/details/78430359 2. 1.修改apache-tomcat-9.0.14-windows-x6 ...

  6. Unity制作出《超级马里奥》的2D和3D混合效果

    现在来做点别的东西.Nintendo Switch上刚推出的<超级马里奥>中,有一些关卡混合了2D和3D的画面,这种效果十分让人印象深刻.如何在Unity中实现这个效果呢? 正常情况下,摄 ...

  7. unix_timestamp 时间戳函数用法(hive)

    pandas和SQL数据分析实战 https://study.163.com/course/courseMain.htm?courseId=1006383008&share=2&sha ...

  8. SDN实验---Ryu的应用开发(四)基于跳数的最短路径转发原理

    一:实现最短跳数转发 (一)原理 推文:迪杰斯特拉算法和弗洛伊德算法 二:代码实现 (一)全部代码 from ryu.base import app_manager from ryu.controll ...

  9. SVN中“txn-current-lock:拒绝访问”错误

    SVN服务器使用的是Visual SVN,重装系统后,使用SVN commit是遇到:不能打开文件“XX:\XXXXX\db\txn-current-lock”: 拒绝访问这样的错误. 原因分析: u ...

  10. Qt编写项目作品大全(自定义控件+输入法+大屏电子看板+视频监控+楼宇对讲+气体安全等)

    一.自定义控件大全 (一).控件介绍 超过160个精美控件,涵盖了各种仪表盘.进度条.进度球.指南针.曲线图.标尺.温度计.导航条.导航栏,flatui.高亮按钮.滑动选择器.农历等.远超qwt集成的 ...