go代码二维码生成(github.com/skip2/go-qrcode)
- 代码实现
package main
import (
"fmt"
"github.com/nfnt/resize"
"github.com/skip2/go-qrcode"
"image"
"image/draw"
"image/png"
"os"
)
func main() {
GenerateLogoErWeiMa()
}
func GenerateLogoErWeiMa() {
// 创建二维码 扫描二维码跳转的地址(这里举例跳转到百度)
qrCode, err := qrcode.New("https://www.baidu.com", qrcode.Medium) // 使用中等错误纠正等级
if err != nil {
panic(err)
}
// 获取二维码图像
qrImg := qrCode.Image(256)
// 创建一个可写的RGBA图像
bounds := qrImg.Bounds()
qrRGBA := image.NewRGBA(bounds)
draw.Draw(qrRGBA, bounds, qrImg, image.Point{}, draw.Src)
// 加载中心图片 图片路径
centerImgFile, err := os.Open("E:\\图片与视频\\微信图片_20240919173525.png") // 替换为你的图片路径
if err != nil {
panic(err)
}
defer centerImgFile.Close()
centerImg, _, err := image.Decode(centerImgFile)
if err != nil {
panic(err)
}
// 调整中心图片尺寸
centerImgSize := 64 // 假设中心图片的尺寸为64x64
centerImg = resize.Resize(uint(centerImgSize), uint(centerImgSize), centerImg, resize.Lanczos3)
// 计算中心图片的位置
offsetX := (qrRGBA.Bounds().Dx() - centerImgSize) / 2
offsetY := (qrRGBA.Bounds().Dy() - centerImgSize) / 2
// 调整位置以避开定位图案
offsetX += 7
offsetY += 7
// 叠加中心图片到二维码上
draw.Draw(qrRGBA, image.Rect(offsetX, offsetY, offsetX+centerImgSize, offsetY+centerImgSize), centerImg, image.Point{}, draw.Over)
// 创建文件并保存带图片的二维码
outputFile, err := os.Create("output_qrcode_with_image.png")
if err != nil {
panic(err)
}
defer outputFile.Close()
// 使用png编码器保存图片
err = png.Encode(outputFile, qrRGBA)
if err != nil {
panic(err)
}
// 输出成功信息
println("QR code with image generated successfully.")
}
- 生成类似这样的二维码(跳转到百度)