从图像中删除背景(使用Alpha混合)

时间:2014-01-23 03:17:56

标签: vb.net image background png alphablending

我有一个问题我无法解决。给定以下位图图像: http://i57.photobucket.com/albums/g239/broa29/buttons_zps1f99a501.png

如何才能获得没有背景的按钮的PNG以及边缘周围的alpha透明阴影,这样我就可以在任何类型的背景上重复使用PNG而不会出现任何故障?我无法在“生成”期间执行此操作,因为您看到的按钮是HTML / CSS,所以我只能得到它的位图。

起初我只有绿色背景版本并且认为如果我只是这样做我将无法使用绿色,所以我重新编写图像以便我有R G和B背景进行比较。因此,我可以很容易地确定哪些像素应该单独放置(它们在所有3个部分中相等),这需要100%透明(RGB值==背景颜色)然后我留下了混合了的边框颜色和背景。

我20多年前毕业,所以我的数学课真的很远,我没有太多的经验,因为我有点迷失。我读了很多,并试图找到这个算法,我找不到任何东西。我尝试自己制作一个,我有很多“接近但没有雪茄”的尝试。如果有人有任何想法,我真的很想得到一个像素完美的算法。

我最好的镜头是在所有3张图像中分别比较R G和B值。我发现每个频道总有2个相同,所以我使用那个。第3个值不匹配我累积3个值,得到它们的平均值并将其用作我的alpha通道。结果不算太糟糕,但绝对不对。我尝试使用倒置的光度值作为alpha通道,并且也没有太好用。尝试了很多其他甚至不太确定的事情。如果我不触摸alpha通道,产生的RGB颜色看起来不错,但它与黑色混合(颜色应该越透明,颜色越黑)。

对这一个人的一点意见真的很感激!感谢

0 个答案:

没有答案