如何在SVG中使用我自己的混合公式?

时间:2013-01-04 14:45:00

标签: svg alphablending blending svg-filters

我正在使用SVG。

标准混合模式:屏幕,亮度,叠加,差异。等......不是我需要的。

我为另一种混合模式设计了一个公式,我需要使用它不是任何标准模式,但不知道如何将它实现到我的SVG文件中以便它可以工作。

我是否只是做一个过滤器中的feBlend mode =“Cm = B(Cb,Cs)”?

具体来说,我想将上面层的亮度应用到下面图层的alpha通道。

必须有办法。

感谢。

1 个答案:

答案 0 :(得分:2)

您无法在SVG 1.1中提供自定义混合公式 - 您仍然无法使用内置插件。但是,您可以使用具有多个feBlends&amp ;;的复合滤镜创建其他类型的混合。 feComposite算术模式与feColorMatrix结合使用。

更新

您想要做的事情不可能按照您想要的方式进行。其中一个输入完全不透明的feBlend操作的结果是完全不透明的结果。 feBlend使用预乘值进行颜色计算。因此,您无法直接获取一个图像的Alpha通道,并将其传输到另一个图像的Alpha通道。但是,如果您尝试将图像与其背景混合,这就是您尝试调整Alpha通道的原因,则可以通过将背景图像用作混合滤镜的一部分来实现您正在寻找的效果(但是这只能在今天的IE10和Opera中实现。)

有一个proposed new blend mode in the combined CSS/SVG blending spec "mode=Luminosity"可以做你想要的 - 但这不会在浏览器中显示一段时间。