Image 如何将golang中的白色背景更改为透明?
如何将Golang图像的白色背景更改为透明Image 如何将golang中的白色背景更改为透明?,image,go,transparent,Image,Go,Transparent,如何将Golang图像的白色背景更改为透明 我想把白色背景变成半透明的颜色,你有什么建议吗?一般来说这是不可能的,但是有一些启发式的方法可以尝试 为什么不可能呢 如果原始图像有一些透明像素,并在纯白色背景或任何已知背景上渲染,则结果图像中会丢失信息。例如,粉色像素是由具有一定透明度的红色像素创建的,还是由不具有透明度的真正粉色像素创建的 即使是纯白色像素也可能原本是全白色的,或者完全透明的,或者介于两者之间 启发式方法 如果你知道一些关于原始图像的信息,或者通过观察可以推断出一些信息,那么你就可
我想把白色背景变成半透明的颜色,你有什么建议吗?一般来说这是不可能的,但是有一些启发式的方法可以尝试 为什么不可能呢 如果原始图像有一些透明像素,并在纯白色背景或任何已知背景上渲染,则结果图像中会丢失信息。例如,粉色像素是由具有一定透明度的红色像素创建的,还是由不具有透明度的真正粉色像素创建的 即使是纯白色像素也可能原本是全白色的,或者完全透明的,或者介于两者之间 启发式方法 如果你知道一些关于原始图像的信息,或者通过观察可以推断出一些信息,那么你就可以推断出原始像素的颜色和透明度。简单的第一步是,如果外部像素是白色的,那么您可能希望用完全透明的像素填充该区域。彩色区域内的白色区域也可能是透明的孔 接下来,假设透明度用于抗锯齿,则可以推断单色对象周围边界像素的颜色。例如,对于周长上有粉红色像素的红色圆圈,它们很可能最初是红色的,具有一定的透明度,导致它们以不同的粉红色着色。对于更复杂的多色形状,您可以通过使用原始图像的判断、知识/猜测以及如何执行抗锯齿的知识手动编辑图像,从而获得合理的结果
许多年前,我编写了一个Paint.Net插件C来自动完成这类工作,有时它会给出合理的结果,但通常需要手动完成。软件包图像具有解码功能
func Decode(r io.Reader) (Image, string, error)
图像是界面
type Image interface {
// ColorModel returns the Image's color model.
ColorModel() color.Model
// Bounds returns the domain for which At can return non-zero color.
// The bounds do not necessarily contain the point (0, 0).
Bounds() Rectangle
// At returns the color of the pixel at (x, y).
// At(Bounds().Min.X, Bounds().Min.Y) returns the upper-left pixel of the grid.
// At(Bounds().Max.X-1, Bounds().Max.Y-1) returns the lower-right one.
At(x, y int) color.Color
}
将文件解码为image.image后,可以从边界获取高度和宽度,从Atx、y获取颜色
下面是下一步要做的事情:
使用alpha通道制作另一个图像,
将整个图像一个像素一个像素地迭代,
检查颜色,在你做任何你想做的事情之后把颜色复制到新的图像上。
你能发布一个展示你尝试过的东西吗?这里的上下文是什么?你在制作网页吗?桌面应用程序?请参阅: