Go生成二维码

Go生成二维码,第1张

生命不息,学习不止 题外话二维码使用Go语言生成二维码图片生成二维码图片字节自定义二维码 你以为结束了

题外话

周六了,休息,那不得抓紧享受人生,菲奥娜,快给少爷我按按腿,娜莎,不要愣着,给少爷我舞上一曲,行,真不错,通知一下后厨,把昨天运来的北极深海贝处理一下,晚上我要吃……
又是乏味的一天…… 人生就是这么简简单单
话说今天这大太阳,真不错


废话不多说,上货

二维码

二维条码/二维码(2-dimensional bar code)是用某种特定的几何图形按一定规律在平面(二维方向上)分布的、黑白相间的、记录数据符号信息的图形;在代码编制上巧妙地利用构成计算机内部逻辑基础的“0”、“1”比特流的概念,使用若干个与二进制相对应的几何形体来表示文字数值信息,通过图象输入设备或光电扫描设备自动识读以实现信息自动处理:它具有条码技术的一些共性:每种码制有其特定的字符集;每个字符占有一定的宽度;具有一定的校验功能等。同时还具有对不同行的信息自动识别功能、及处理图形旋转变化点。

二维条码/二维码可以分为堆叠式/行排式二维条码和矩阵式二维条码。 堆叠式/行排式二维条码形态上是由多行短截的一维条码堆叠而成;矩阵式二维条码以矩阵的形式组成,在矩阵相应元素位置上用“点”表示二进制“1”, 用“空”表示二进制“0”,“点”和“空”的排列组成代码。

举个例子

这是几组矩阵式二维码,百度百科的图

使用Go语言生成二维码图片

使用Go语言编程时,生成任意内容的二维码是非常方便的,可以使用 go-qrcode 这个库快速生成二维码。大家可以从 github 上(https://github.com/skip2/go-qrcode)下载并使用这个库。要是下载不下来的挂个代理就可。
上代码

package main
import "github.com/skip2/go-qrcode"
func main() {
    qrcode.WriteFile("http://www.kaotop.com/file/tupian/20220518/golang_qrcode.png")
}

这样我们运行代码的时候,就在当前目录下,生成一张 256*256 的二维码,我生成的是自己主页的二维码。

然后来说一下代码中用到的这个方法
func WriteFile(content string, level RecoveryLevel, size int, filename string) error
WriteFile 函数的原型定义如上,它有几个参数,大概意思如下:
content 表示要生成二维码的内容,可以是任意字符串;
level 表示二维码的容错级别,取值有 Low、Medium、High、Highest;
size 表示生成图片的 width 和 height,像素单位;
filename 表示生成的文件名路径;
RecoveryLevel 类型其实是个 int,
它的定义和常量如下:

type RecoveryLevel int
const (
    // Level L: 7% error recovery.
    Low RecoveryLevel = iota
    // Level M: 15% error recovery. Good default choice.
    Medium
    // Level Q: 25% error recovery.
    High
    // Level H: 30% error recovery.
    Highest
)

RecoveryLevel 越高,二维码的容错能力越好

生成二维码图片字节

有时候我们不想直接生成一个 PNG 文件存储,我们想对 PNG 图片做一些处理,比如缩放了,旋转了,或者网络传输了等,基于此,我们可以使用 Encode 函数,生成一个 PNG 图片的字节流,这样我们就可以进行各种处理了
还是go-qrcode这个库的方法
func Encode(content string, level RecoveryLevel, size int) ([]byte, error)
用法和 WriteFile 函数差不多,只不过返回的是一个 []byte 字节数组,这样我们就可以对这个字节数组进行处理了。

自定义二维码

光是生成当然不行,我们得想法让它好看点
除了以上两种快捷方式,go-qrcode 库还为我们提供了对二维码的自定义方式,比如我们可以自定义二维码的前景色和背景色等。qrcode.New 函数可以返回一个 *QRCode,我们可以对 *QRCode 设置,实现对二维码的自定义。
比如我们设置背景色为绿色,前景色为黑色的二维码

package main
import(
    "github.com/skip2/go-qrcode"
    "image/color"
    "log"
)
func main() {
    qr,err:=qrcode.New("http://www.kaotop.com/file/tupian/20220518/golang_qrcode.png")
    }
}


要想生活过的去,还得是这一点绿啊

你以为结束了

小问题:我不信能有比我这个二维码好看的……

上期问题:如何不使用递归完成斐波那契数列的实现?
上期答案:动态规划或二维矩阵


大家看完发现有什么错误,写在下面吧!跟我黑虎阿福比划比划!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/996125.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-21
下一篇 2022-05-21

发表评论

登录后才能评论

评论列表(0条)

保存