Go 每日一库-go-qrcode


安装

go get -u github.com/yeqown/go-qrcode/v2

功能

  • 通常生成version 1version 40的二维码(关于二维码的version戳这里
  • 按源文本自动分析 QR version。
  • 允许使用WithCustomShape指定单元格形状WithCircleShape(默认为rectangle
  • 使用WithBuiltinImageEncoderWithCustomImageEncoder指定输出文件的格式(默认为JPEG
  • WithLogoImage, WithLogoImageFilePNG,WithLogoImageFileJPEG帮助您在二维码中心添加一个图标。
  • WithBorderWidth允许指定 qrcode 周围 4 边的任意宽度。
  • 支持 WebAssembly (请看官方文档)
  • 支持 Halftone QR Codes

实例

package main

import (
	"fmt"
	"github.com/yeqown/go-qrcode/v2"
	"github.com/yeqown/go-qrcode/writer/standard"
)

func main() {
	// 新建二维码链接
	qrc, err := qrcode.NewWith("https://anubis.cafe/")
	if err != nil {
		fmt.Printf("could not generate QRCode: %v", err)
		return
	}
	// 设置二维码编写器的文件保存路径

	w, err := standard.New("./1.png")
	if err != nil {
		fmt.Printf("standard.New failed: %v", err)
		return
	}
	// 保存文件
	if err = qrc.Save(w); err != nil {
		fmt.Printf("could not save image: %v", err)
	}
}

用法

生成二维码

使用 qrcode.New 生成一个二维码

qrc, err := qrcode.New("https://anubis.cafe/")
	if err != nil {
		fmt.Printf("could not generate QRCode: %v", err)
		return
	}

指定二维码版本

qrc, err := qrcode.NewWith("https://anubis.cafe/",qrcode.WithVersion(2))
if err != nil {
	fmt.Printf("could not generate QRCode: %v", err)
	return
}

设置二维码呈现效果

w, err := standard.New("./1.png", standard.WithLogoImageFilePNG("./2.png"))
if err != nil {
   fmt.Printf("standard.New failed: %v", err)
   return
}

利用 standard 包中的参数来进行二维码的设置

  • WithBgTransparent() 设置二维码背景透明
  • WithBgColor(c color.Color) 设置背景颜色
  • WithBgColorRGBHex(hex string) 设置RGB十六进制背景色
  • WithFgColor(c color.Color) 设置二维码条纹颜色
  • WithFgColorRGBHex(hex string)设置RGB十六进制条纹色
  • WithLogoImage(img image.Image)设置 logo (图像最多只能有QRCode的1/5宽度)
  • WithLogoImageFileJPEG(f string)设置 jpeg 图片为 logo,限制同上
  • WithLogoImageFilePNG(f string)设置 png 图片为 logo,限制同上
  • WithQRWidth(width uint8)指定每个二维码块的宽度
  • WithCircleShape()将二维码块设置为圆形
  • WithCustomShape(shape IShape)将二维码块设置为自定义形状
  • WithBuiltinImageEncoder(format formatTyp)
  • WithBorderWidth(a) 指定4个边的边框宽度为a。
  • WithBorderWidth(a, b) 上/下=a,左/右=b。
  • WithBorderWidth(a, b, c, d) 意思是上,右,下,左
  • WithCustomImageEncoder(encoder ImageEncoder)使用自定义图像编码器
  • WithBuiltinImageEncoder(format formatTyp)使用 JPEG_FORMAT 或 PNG_FORMAT 编码器
  • WithHalftone(path string) 请看下面使用自定义图片作为样式

使用自定义图片作为样式

🚧请注意,不能使用矩形以外的其他形状,因为 qr 块之间的间隙可能会误导识别器。

package main

import (
	"fmt"
	"github.com/yeqown/go-qrcode/v2"
	"github.com/yeqown/go-qrcode/writer/standard"
)

func main() {
	// 新建二维码链接
	qrc, err := qrcode.NewWith("https://anubis.cafe/")
	if err != nil {
		fmt.Printf("could not generate QRCode: %v", err)
		return
	}
	// 设置二维码编写器的文件保存路径

	w, err := standard.New("./1.png",
		standard.WithHalftone("./2.png"),
		standard.WithQRWidth(100))
	if err != nil {
		fmt.Printf("standard.New failed: %v", err)
		return
	}
	// 保存文件
	if err = qrc.Save(w); err != nil {
		fmt.Printf("could not save image: %v", err)
	}
}

1.png

1.png


如果本文帮助到了你,帮我点个广告可以咩(o′┏▽┓`o)


文章作者: Anubis
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Anubis !
评论
  目录