feColorMatrix的第五列确切代表

时间:2018-09-23 11:28:01

标签: svg svg-filters

在mozilla的feColorMatrix文档中,

  

SVG滤镜元素根据   转换矩阵。每个像素的颜色值(用   [R,G,B,A]向量)乘以矩阵以创建新的颜色。

但是在feColorMatrix中有5列,而不是4列。 在出色的article中,可以将其视为经典参考,其中指出:

  

这里的矩阵实际上是在计算它的最终RGBA值   行,为每个RGBA通道提供自己的RGBA通道。最后一个号码   是一个乘数。

但这并不能解释太多。据我了解,由于在应用过滤器后,我们基本上精确地修改了R,G,B和A通道,除此之外没有其他必要。间接地有证据表明,文章本身-提供了许多基于feColorMatrix的过滤器的示例-都将零作为第五成分。另外,为什么它是乘数?

在另一个著名的article中指出:

  

对于其他行,您正在将每个rgba输出值创建为   rgba输入值的总和乘以对应的   矩阵值,加上一个常数。

将其称为常数添加比将其称为乘数更有意义,但是仍不清楚 feColor矩阵中的第五个成分代表什么,没有它是什么无法实现-所以这就是我的问题。

我最后的希望是w3c参考,但它也是surprisingly vague

1 个答案:

答案 0 :(得分:1)

尽管您确实需要了解矩阵数学,但规范很明确。第五列是固定偏移量。这很有用,因为如果要在输出中添加特定数量的R / G / B / A,则该列是唯一的方法。或者,如果您想将某些东西重新着色为特定的颜色,那也是这样做的方法。

例如-如果您的输入中有多种不透明颜色,但您想将所有颜色重新着色为rgba(255,51,0,1),那么这就是您要使用的矩阵。

0 0 0 0 1.0

0 0 0 0 0.2

0 0 0 0 0

0 0 0 1 0

aka

<feColorMatrix type="matrix" values="0 0 0 0 1   0 0 0 0 0.5   0 0 0 0 0  0 0 0 1 0"/>

亲自尝试以下滑块: https://codepen.io/mullany/pen/qJCDk