为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
慕娘9325324 2022-10-31 15:50:34
起初我认为这是因为暗模式,这是一个 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)
查看完整描述

1 回答

?
梦里花落0921

TA贡献1772条经验 获得超6个赞

好的,所以如果您尝试让透明度自行运行,您会遇到太多问题,具体取决于操作系统、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 中找到的唯一选择。


查看完整回答
反对 回复 2022-10-31
  • 1 回答
  • 0 关注
  • 148 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信