猿问

Golang,下载图像后透明背景显示为黑色

起初我认为这是因为暗模式,这是一个 mac 问题,但不是。


我的软件在图像中插入了一个徽标。


插入完成后,图像可以保存为 png、jpeg 或 pdf。即使在为整个图像应用白色背景后,将其下载为 png 时,徽标周围也会有黑色背景。仅在 PDF 版本中,徽标以白色背景正确显示。


这是转换:


func moveLogoPosition(mainImage, logo image.Image, poseX, poseY, width, size int, excavate bool) {

    const regularMainImageSize = 300


    m := resize.Resize(uint(75), 0, logo, resize.Bilinear)

    sr := m.Bounds()


    xOrigin := mainImage.Bounds().Size().X/2 - sr.Size().X/2

    yOrigin := mainImage.Bounds().Size().Y/2 - sr.Size().Y/2

    xFinal := xOrigin + sr.Bounds().Size().X

    yFinal := yOrigin + sr.Bounds().Size().Y


    r := image.Rectangle{

        Min: image.Point{X: xOrigin + poseX, Y: yOrigin + poseY},

        Max: image.Point{X: xFinal + poseX, Y: yFinal + poseY},

    }


    draw.Draw(mainImage.(*image.NRGBA), r, m, sr.Min, draw.Src)

}

我想知道如果我遗漏了什么,我应该把背景画成白色吗?老实说,我不确定如何做到这一点。


另一方面,主图像的透明度没有问题!


我正在加入当前结果的示例(作为 png)

慕娘9325324
浏览 205回答 1
1回答

梦里花落0921

好的,所以如果您尝试让透明度自行运行,您会遇到太多问题,具体取决于操作系统、PNG 的质量等。因此,我们强制将透明像素绘制为白色(在我们的例子中),以确保:不仅“非挖掘透明”部分正确显示为白色,而且还要确保徽标/图像在哪里用 illustrator 打开否则,正确支持现在白色的“透明度”。这是我添加的内容:white := color.RGBA{255, 255, 255, 255}draw.Draw(mainImage, r, &image.Uniform{C: white}, image.Point{}, draw.Src)draw.Draw(mainImage, r, m, sr.Min, draw.Over)我不知道这是否会帮助任何人,但这是我在 Go 中找到的唯一选择。
随时随地看视频慕课网APP

相关分类

Go
我要回答