通过Go语言制作二维码

本篇文章重点为大家讲解一下使用Go语言制作二维码具体方法,有需要的小伙伴可以参考一下。

Go语言生成二维码图片

使用Go语言编程时,生成任意内容的二维码是非常方便的,因为我们有go-qrcode这个库。该库的源代码托管在github上,大家可以下载使用 https://github.com/skip2/go-qrcode。

这个库的使用很简单,假如我要以我的博客网站地址http://www.flysnow.org生成一张256*256的图片,可以使用如下代码:

import "github.com/skip2/go-qrcode"
func main() {
   qrcode.WriteFile("http://www.flysnow.org/",qrcode.Medium,256,"./blog_qrcode.png")
}

这样我们运行代码的时候,就在当前目录下,生成一张256*256的二维码,扫描后可以看到内容是http://www.flysnow.org/。

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 图片的字节流,这样我们就可以进行各种处理了。

func Encode(content string, level RecoveryLevel, size int) ([]byte, error)

用法和WriteFile函数差不多,只不过返回的是一个[]byte字节数组,这样我们就可以对这个字节数组进行处理了。

自定义二维码

除了以上两种快捷方式,该库还为我们提供了对二维码的自定义方式,比如我们可以自定义二维码的前景色和背景色等。qrcode.New函数可以返回一个QRCode,我们可以对QRCode设置,实现对二维码的自定义。

比如我们设置背景色为绿色,前景色为白色的二维码

func main() {
   qr,err:=qrcode.New("http://www.flysnow.org/",qrcode.Medium)
   if err != nil {
       log.Fatal(err)
   } else {
       qr.BackgroundColor = color.RGBA{50,205,50,255}
       qr.ForegroundColor = color.White
       qr.WriteFile(256,"./blog_qrcode.png")
   }
}

指定*QRCode的BackgroundColor和ForegroundColor即可。然后调用WriteFile方法生成这个二维码文件。

func New(content string, level RecoveryLevel) (*QRCode, error)

// A QRCode represents a valid encoded QRCode.type QRCode struct {
   // Original content encoded.
   Content string

   // QR Code type.
   Level         RecoveryLevel
   VersionNumber int

   // User settable drawing options.
   ForegroundColor color.Color
   BackgroundColor color.Color
}

以上QRCode的这些字段都是可以设置的,这样我们就可以灵活自定义二维码了。

小结

二维码是一种流行的输入技术手段,不光Go可以生成,其他语言也可以生成,并且生成的二维码是标准的,都可以扫描和识别,比如Java可以通过这个https://github.com/kenglxn/QRGen库来生成。

原创文章,作者:晴川运维,如若转载,请注明出处:https://baike.qcidc.com/16757.html

(0)
晴川运维晴川运维
上一篇 2025年10月24日
下一篇 2025年10月24日

相关推荐

  • PHP 删除数组中元素具体方法

    在PHP中没有一种专门删除一个特定数组元素的方法,但是可以借助其他的函数进行实现,下面为大家详细讲解一下PHP 删除数组中元素具体方法。 删除数据中的一个元素 如果你想删除数组中的…

    Linux系统 2025年9月21日
  • 详解搭建rsync服务器方法

    rsync是可以实现增量备份的工具。配合任务计划,rsync能实现定时或间隔同步,配合inotify或sersync,可以实现触发式的实时同步,下面讲解一下搭建rsync服务器方法…

    Linux系统 2025年10月5日
  • echo命令使用实例

    echo命令是linux中最基础的命令,也是很常用的命令,特别是在写shell脚本的时候,可能会经常被用到,虽然echo命令非常基础,但是功能还算丰富,本篇文章为大家分享一下ech…

    Linux系统 2025年6月8日
  • Linux下部署VPS

    VPS技术,将一台服务器分割成多个虚拟专享服务器的优质服务。实现VPS的技术分为容器技术,和虚拟化技术 。在容器或虚拟机中,每个VPS都可选配独立公网IP地址、独立操作系统、实现不…

    Linux系统 2025年6月13日
  • C++中double类型保留三位小数点

    我们知道C语言中,如果要求输出结果保留三位小数,我们可以使用pritf()函数轻松的解决。但是的输出运算符 我以一个例子作为讲解: 已知线段的两个端点坐标是A(xa,ya),B(x…

    Linux系统 2025年6月8日
  • Linux桌面环境(桌面系统)大比拼[附带优缺点]

    早期的 linux 系统都是不带界面的,只能通过命令来管理,比如运行程序、编辑文档、删除文件等。所以,要想熟练使用 Linux,就必须记忆很多命令。 后来随着 Windows 的普…

    Linux系统 2025年6月24日
  • Docker使用yum报错解决方法

    dockerfile里或者在容器里执行yum,报错,找不到源(invalid baseurl xxx),但是宿主机上执行yum是没问题的啊,为什么? 因为不论是dockerfile…

    Linux系统 2025年10月8日
  • Docker搭建本地仓库具体方法

    和Mavan的管理一样,Docker不仅提供了一个中央仓库,同时也允许我们使用registry搭建本地私有仓库,下面为大家详细讲解一下Docker搭建本地仓库具体方法。 一,本地安…

    Linux系统 2025年10月26日
  • 云中构建数字核心具体方案

    云计算如今成为很多组织运营业务的关键部分。对于许多组织来说,发生的冠状病毒疫情促使他们重新思考如何管理自己的业务,以及如何采用或加快利用数字技术。如果没有云计算,许多组织的运营可能…

    Linux系统 2025年9月15日
  • Linux lsblk命令实例

    lsblk命令用来查看block设备的信息.主要应用场景: 获取wwnid,获取块设备列表,获取块设备类型(ssd,hdd),获取块设备的size等信息。 系统环境 Centos7…

    Linux系统 2025年6月11日

发表回复

登录后才能评论