gpt4 book ai didi

image - Golang Overlay 图像总是黑白的

转载 作者:行者123 更新时间:2023-12-04 17:14:15 24 4
gpt4 key购买 nike

我正在尝试在 qrcode(image) 上叠加。问题是我的原始叠加图像是彩色的,但最终结果是黑白的。下面是代码:

func (e Encoder) Encode(str string, logo image.Image, size int) (*bytes.Buffer, error) {
var buf bytes.Buffer

code, err := qr.New(str, e.QRLevel)
if err != nil {
return nil, err
}

img := code.Image(size)
e.overlayLogo(img, logo)

err = png.Encode(&buf, img)
if err != nil {
return nil, err
}

return &buf, nil
}


func (e Encoder) overlayLogo(dst, src image.Image) {

offset := dst.Bounds().Max.X/2 - src.Bounds().Max.X/2
yOffset := dst.Bounds().Max.Y/2 - src.Bounds().Max.Y/2
draw.Draw(dst.(draw.Image), dst.Bounds().Add(image.Pt(offset, yOffset)), src, image.Point{}, draw.Over)
}

有人可以帮我吗? This is the final image that I'm getting

Image Used

最佳答案

QR 代码图像使用 2 种颜色,使它们更易于扫描/识别。您正在使用的图书馆 github.com/skip2/go-qrcode创建仅使用 2 种颜色的调色板图像(默认为黑色和白色)。可以查看QRCode.Image()的源码你调用的方法,source here :

p := color.Palette([]color.Color{q.BackgroundColor, q.ForegroundColor})
img := image.NewPaletted(rect, p)

这意味着无论您在此类图像上绘制什么,每个像素的颜色都将从这个 2 尺寸的调色板(背面或白色)中选择。绘制图像的颜色信息将丢失。

如果要保留所有颜色,则必须创建一个支持所有(或至少使用的)颜色的图像,在其上绘制二维码图像,然后叠加。

关于image - Golang Overlay 图像总是黑白的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68982301/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com