上demo,可直接运行
对你有用的话点个心心吧
package main
import (
"github.com/boombuler/barcode"
"github.com/boombuler/barcode/qr"
"image"
"image/jpeg"
"image/png"
"log"
"os"
)
func main() {
qrGen := QRProperty{
Content:"https://www.baidu.com",
GenPath:"/Users/lulu/workspace/dev/go/src/work/demo/qr/test.png",
Width:100,
Height:100,
Quality:90,
}
qrGen.GenQR()
}
type QRProperty struct {
Content string //生成内容
GenPath string //生成路径
Width int //生成图片的宽度
Height int //生成图片的高度
Quality int //生成图片的质量
}
//生成二维码
func (q *QRProperty) GenQR() error {
log.Println("Original data:", q.Content)
code, err := qr.Encode(q.Content, qr.L, qr.Unicode)
if err != nil {
return err
}
log.Println("Encoded data: ", code.Content())
if q.Content != code.Content() {
log.Fatal("data differs")
}
code, err = barcode.Scale(code, q.Width, q.Height)
if err != nil {
log.Fatal(err)
}
return writePng(q.GenPath, code, q.Quality)
}
func writePng(filename string, img image.Image, quality int) error {
file, err := os.Create(filename)
if err != nil {
return err
}
err = png.Encode(file, img)
if err != nil {
return err
}
err = jpeg.Encode(file, img, &jpeg.Options{quality}) //图像质量值为100,是最好的图像显示
if err != nil {
return err
}
file.Close()
return nil
}