确定透明度的公式

Posted

技术标签:

【中文标题】确定透明度的公式【英文标题】:Formula to determine transparancy 【发布时间】:2015-02-16 01:29:07 【问题描述】:

假设您想在 BMP 图片中放置具有颜色 (R0 G200 B255) 的像素,并且您有以百分比表示的 transp 选项。

考虑到transp 和背景颜色,如何确定新的像素颜色?


我实际上可以找出一个看起来很有希望的公式:

newpixel = newpixel + (bgpixel * transp) / %(transp of 255)

我通过分析 GIMP 中的像素颜色变化来创建它。不确定这是否是正确的公式。我认为它也被四舍五入了。

【问题讨论】:

【参考方案1】:

标准公式是pixel = new_pixel * alpha + pixel * (1 - alpha),其中alpha是一个介于01之间的数字,描述了新的(前景) 像素。

您会注意到,如果新像素是完全透明的 (alpha = 0),则像素不会改变;如果新像素是完全不透明的 (alpha = 1),则新像素会替换旧像素。

这个公式必须单独应用于每个像素分量(红色、绿色和蓝色)。

【讨论】:

【参考方案2】:

代码需要更改为 24 位像素。

其中第 4 个字节是透明度因子。

实际颜色值不变

【讨论】:

不,不需要第 4 个字节。这不是真正的透明度,而是受旧像素影响的新像素的修改。你也可能是指 32 位*

以上是关于确定透明度的公式的主要内容,如果未能解决你的问题,请参考以下文章

如何用PIL确定ICO图像的透明色指数?

确定 GIF 在 Python 中是不是透明

如何确定动画 GIF 帧中透明像素的数量?

透明度混合

以数学方式计算不透明度值

OpenGL - 在附加层下渲染透明度