登录
首页 >  Golang >  Go问答

显示背景为黑色的图像下载问题

来源:stackoverflow

时间:2024-02-24 08:06:24 106浏览 收藏

本篇文章向大家介绍《显示背景为黑色的图像下载问题》,主要包括,具有一定的参考价值,需要的朋友可以参考一下。

问题内容

起初我以为这是 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 格式)


正确答案


好吧,如果您尝试让透明度自行发挥作用,您会遇到太多问题,具体取决于操作系统、png 的质量等。

因此,我们强制将透明像素绘制为白色(在我们的例子中)以确保: 不仅“未挖掘的透明”部分正确显示为白色,而且还要确保如果使用插画或其他方式打开徽标/图像,则正确支持现在白色的“透明度”。

这是我添加的内容:

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 中找到的唯一替代方案。

今天关于《显示背景为黑色的图像下载问题》的内容介绍就到此结束,如果有什么疑问或者建议,可以在golang学习网公众号下多多回复交流;文中若有不正之处,也希望回复留言以告知!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>