当前位置: 首页 > article >正文

使用go生成、识别二维码

1、下载

# 创建目录
# 进入目录
# 执行 go mod init xxx 命令(即:在当前目录初始化创建一个模块)

# 下载gozxing
go get github.com/makiuchi-d/gozxing

2、生成二维码

package main

import (
	"image/png"
	"os"

	"github.com/makiuchi-d/gozxing"
	"github.com/makiuchi-d/gozxing/oned"
	"github.com/makiuchi-d/gozxing/qrcode"
)

func main() {
	// writeBarcode()
	writeQrcode()
}

// 条形码
func writeBarcode() {
	// Generate a barcode image (*BitMatrix)
	writer := oned.NewCode128Writer()
	img, _ := writer.Encode("content: bar code", gozxing.BarcodeFormat_CODE_128, 100, 50, nil)

	file, _ := os.Create("barcode.png")
	defer file.Close()

	png.Encode(file, img)
}

// 二维码
func writeQrcode() {
	// Generate a qrcode image (*BitMatrix)
	writer := qrcode.NewQRCodeWriter()
	img, _ := writer.Encode("content: qr code", gozxing.BarcodeFormat_QR_CODE, 100, 100, nil)

	file, _ := os.Create("qrcode.png")
	defer file.Close()

	png.Encode(file, img)
}

3、识别二维码

package main

import (
	"fmt"
	"image"
	_ "image/png"
	"os"

	"github.com/makiuchi-d/gozxing"
	"github.com/makiuchi-d/gozxing/oned"
	"github.com/makiuchi-d/gozxing/qrcode"
)

func main() {
	// readBarcode()
	readQrcode()
}

// 条形码
func readBarcode() {
	// open and decode image file
	file, _ := os.Open("barcode.png")
	img, _, _ := image.Decode(file)

	// prepare BinaryBitmap
	bmp, _ := gozxing.NewBinaryBitmapFromImage(img)

	// decode image
	reader := oned.NewCode128Reader()
	result, _ := reader.Decode(bmp, nil)

	fmt.Println(result)
}

// 二维码
func readQrcode() {
	// open and decode image file
	file, _ := os.Open("qrcode.png")
	img, _, _ := image.Decode(file)

	// prepare BinaryBitmap
	bmp, _ := gozxing.NewBinaryBitmapFromImage(img)

	// decode image
	reader := qrcode.NewQRCodeReader()
	result, _ := reader.Decode(bmp, nil)

	fmt.Println(result)
}

详见:

https://pkg.go.dev/search?q=qrcode

GitHub - makiuchi-d/gozxing: Port of ZXing (https://github.com/zxing/zxing) core to pure Go.


http://www.kler.cn/a/430643.html

相关文章:

  • 五、Swagger 介绍(Flask+Flasgger的应用)
  • 【Linux】centos7安装php7.4
  • 模型的量化(Quantization)
  • 基于微信小程序的校园访客登记系统
  • Y3编辑器教程8:资源管理器与存档、防作弊设置
  • 全面掌握 AutoGluon:从入门到生产环境的实践指南
  • 【GitHub分享】you-get项目
  • 断点续传【授权访问】
  • js后端开发之Next.js、Nuxt.js 与 Express.js
  • 在huggingface.co的Spaces中推理,得到错误:No space left on device
  • Docker多架构镜像构建踩坑记
  • AI Weekly『12月2-8日』:OpenAI发布发布满血版o1,Meta发布Llama 3.3模型!
  • 将yolo系列中的类别转为字典或者list
  • MongoDB靶场(手工注入)攻略
  • UART串口通讯---STM32
  • 初次使用uniapp编译到微信小程序编辑器页面空白,真机预览有内容
  • 2024.12.10总结
  • zsh配置
  • Word中的公式域
  • SQL项目实战与综合应用——项目设计与需求分析
  • 鸿蒙面试---1208
  • Muduo网络库解析---事件循环模块
  • Java 基础之 XQuery:强大的 XML 查询语言
  • 【C++指南】类和对象(七):友元
  • html小白初学
  • go语言zero框架对接阿里云消息队列MQ的rabbit的配置与调用