| 1234567891011121314151617181920212223242526272829303132333435363738394041 |
- // ============================================================================
- // qrcode.go — 工具页二维码生成
- //
- // 用 go-qrcode 把任意字符串生成 PNG 二维码,返回 data URI 供前端预览/下载。
- // ============================================================================
- package main
- import (
- "encoding/base64"
- "errors"
- "strings"
- qrcode "github.com/skip2/go-qrcode"
- )
- // GenerateQRCode 把输入字符串生成 PNG 二维码,返回 data URI 供前端 <img> 直接展示。
- // 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
- }
|