我需要在图像周围放置一个alpha混合渐变边框。我的问题是混合角落,使它们在水平和垂直渐变相遇的地方是平滑的。我相信有一种标准算法可以解决这个问题。我想我甚至多年前在学校遇到过它。但是我在几次网络搜索中找不到任何引用都没有成功。

(我在角落里实施了一个径向填充图案,但转换仍然不够平滑。)

我的问题

  1. 如果有标准算法 这个问题,名称是什么 它,甚至更好,它是怎么回事 实施

  2. 放弃任何标准算法, 什么是确定所需像素的最佳方法 产生平滑梯度的价值 在角落里? (顺利 从垂直过渡 渐变到水平 梯度。)

  3. 编辑:想象一下,我有一个图像,我将插入一个更大的图像。较大的图像为纯黑色,较小的图像为纯白色。在插入之前,我想通过在较小的图像上设置alpha值来将较小的图像混合到较大的图像中,以创建透明的<!> quot; border <!> quot;围绕它,所以它<!>“;淡化<!>”;进入更大的图像。做得对,我应该有一个从黑到白的平滑渐变,除了角落和内边缘,我到处都是。

    在靠近图像中心的渐变边框的边缘,值为255(不透明)。当边界接近外边缘时,alpha值接近0.在图像的角落中,vert <!> amp;水平边界相遇,你最终得到的是对角线。我想消除那条线并顺利过渡。

    我需要的是一种算法,用于确定每个像素的alpha值(0 - 255),当水平和垂直边缘相交时,这些像素在图像的一角重叠。

有帮助吗?

解决方案

据推测,你将它们重叠的两个渐变相乘,对吧?

Dunno关于标准算法。但是如果你使用一个符号形状的渐变而不是一个线性渐变,那么应该消除两个重叠的可见边缘。

一个简单的sigmoid函数是smoothstep(t)= t t (3 - 2 * t)其中0 <!> lt; = t <!> lt; = 1

其他提示

如果您不需要它可以调整大小,那么您可以使用简单的alpha贴图。

然而,我曾经使用过一个简单的高斯渐变,其中的平均值位于我希望它成为最后一个完全不透明像素的位置。如果这是有道理的。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top