package main import ( "bytes" "github.com/boombuler/barcode" "github.com/boombuler/barcode/qr" "image/png" "net/http" "os" ) func main() { // 演示地址:http://localhost:8080/qrcode.png http.HandleFunc("/qrcode.png", func(writer http.ResponseWriter, request *http.Request) { content := "PHP是世界上最好の语言" // 二维码内容 width := 256 // 二维码图片宽度(含边框) height := 256 // 二维码图片高度(含边框) bc, err := qr.Encode(content, qr.M, qr.Auto) if err != nil { panic("创建Barcode对象失败:" + err.Error()) } bc, err = barcode.Scale(bc, width, height) if err != nil { panic("设置二维码图片尺寸失败:" + err.Error()) } buffer := new(bytes.Buffer) err = png.Encode(buffer, bc) if err != nil { panic("生成二维码图片失败:" + err.Error()) } // 直接显示二维码图片 _, _ = writer.Write(buffer.Bytes()) // 保存为*.png文件到本地 file, _ := os.Create("qrcode.png") defer func(file *os.File) { _ = file.Close() }(file) err = png.Encode(file, bc) if err != nil { panic("保存二维码图片失败:" + err.Error()) } }) // 启动HTTP服务器 err := http.ListenAndServe(":8080", nil) if err != nil { panic("启动HTTP服务器失败:" + err.Error()) } }
Copyright © 2024 码农人生. All Rights Reserved