// ============================================================================ // qrcode.go — 工具页二维码生成 // // 用 go-qrcode 把任意字符串生成 PNG 二维码,返回 data URI 供前端预览/下载。 // ============================================================================ package main import ( "encoding/base64" "errors" "strings" qrcode "github.com/skip2/go-qrcode" ) // GenerateQRCode 把输入字符串生成 PNG 二维码,返回 data URI 供前端 直接展示。 // size 为图片边长(像素),<=0 时用默认值 300。 func GenerateQRCode(text string, size int) (string, error) { text = strings.TrimSpace(text) if text == "" { return "", errors.New("请输入要生成二维码的内容") } if len(text) > 1000 { return "", errors.New("内容过长,请控制在 1000 字符以内") } if size <= 0 { size = 300 } if size < 128 { size = 128 // 最小尺寸,避免模糊 } if size > 1024 { size = 1024 // 最大尺寸 } png, err := qrcode.Encode(text, qrcode.Medium, size) if err != nil { return "", err } return "data:image/png;base64," + base64.StdEncoding.EncodeToString(png), nil }