在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。
答案 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