通过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日

相关推荐

  • Linux下查看端口占用具体方法

    Linux如何查看端口占用?在Linux系统中查看端口占用可以使用lsof和netstat命令,下面为大家讲解一下Linux下查看端口占用具体方法。 1、lsof -i:端口号 用…

    Linux系统 2025年6月26日
  • Linux中非常实用的小技巧

    使用 Linux 最酷的事情之一就是随着时间的推移,你可以不断获得新的知识。每天,你都可能会遇到一个新的实用工具,或者只是一个不太熟悉的奇技淫巧,但是却非常有用。这些零碎的东西并不…

    Linux系统 2025年10月23日
  • 五大最流行的配置管理工具

    了解一下配置管理工具,以找出哪个最适合你的 DevOps 组织。 DevOps 正因为有提高产品质量、缩短产品开发时间等优势,目前备受业界关注,同时也在长足发展当中。 DevOps…

    Linux系统 2025年10月27日
  • 快速上手Zabbix使用方法

    Zabbix是一款能够监控各种网络参数以及服务器健康性和完整性的软件。Zabbix使用灵活的通知机制,允许用户为几乎任何事件配置基于邮件的告警。这样可以快速反馈服务器的问题。基于已…

    Linux系统 2025年6月18日
  • 详解Linux下端口映射

    端口映射器可实现端口映射功能,一个主要用途就是可以在局域网的网关上运行本程序,将网关服务器的某个端口映射为局域网中某台机器的某个端口,这样,局域网外部访问网关服务器的8081端口就…

    Linux系统 2025年6月21日
  • Linux常用命令fsck.minix命令具体使用方法

    Linux fsck.minix命令用于检查文件系统并尝试修复错误。 当minix文件系统发生错误时,可用fsck.minix指令尝试加以参考。 语法 fsck.minix&nbs…

    Linux系统 2025年6月8日
  • NGINX动静分离

    动静分离主要是通过nginx+PHP-FPM来实现,其中nginx处理图片,html等静态的文件,PHP处理动态程序[PHP-FPM] 简单点来说,就是用户在请求的时候,如果只是简…

    Linux系统 2025年9月20日
  • Linux中ping命令的特殊使用方法

    不管在windows平台,还是在linux平台,ping都是非常常用的网络命令;ping命令通过ICMP(Internet控制消息协议)工作;ping可以用来测试本机与目标主机是否…

    Linux系统 2025年7月8日
  • Linux Tee 命令使用实例

    Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。在执行Linux命令时,我们既想把输出保存到文件中,又想在屏幕上看到输出内容,那么可以用到tee…

    Linux系统 2025年6月8日

发表回复

登录后才能评论