【问题标题】:What is the meaning of each element of feColorMatrix?feColorMatrix 的每个元素的含义是什么?
【发布时间】:2020-12-13 14:06:11
【问题描述】:

每个 feColorMatrix 值的含义是什么?

我有一个黑色的 svg 形状,它必须用 #26bf8c 颜色遮罩。我正在尝试找到该矩阵的含义以将我的 HEX 转换为它?

<svg width='20px' height='10px' preserveAspectRatio='none meet'>
    <image filter='url(#colorMatrixFilter1)' width='20px' height='10px' xlink:href='../img.svg' />
    <defs>
        <filter id='colorMatrixFilter1'>
            <feColorMatrix type='matrix'
                    values='1 0 0 0 0
                            1 0 0 1 0
                            1 0 0 0 0
                            0 1 0 1 0
                    '/>
        </filter>
    </defs>
</svg>

我以为我可以写下 rgb 值作为它们的二进制表示,但似乎矩阵的工作方式不同。

【问题讨论】:

    标签: html matrix svg-filters


    【解决方案1】:

    要将元素重新着色为特定颜色,您必须这样做。

    • 指定“color-interpolation-filters="sRGB"
    • 将十六进制值转换为单位刻度 (0 - 1)。
    • 将 R/G/B 值放在矩阵的前三行的第五列。

    您的具体矩阵是:

            <filter id='colorMatrixFilter1' color-interpolation-filters="sRGB">
            <feColorMatrix type='matrix'
                    values='0 0 0 0 0.149
                            0 0 0 0 0.749
                            0 0 0 0 0.548
                            0 0 0 1 0'/>
        </filter>
    

    前四列中的所有值都是乘数。他们获取每个像素的每个颜色通道的值,将其乘以该矩阵单元的值,然后将其添加到另一个颜色通道。第五列是偏移量 - 它为每个颜色通道添加一个固定值。

    矩阵的单元格 1,1 是红色 -> 红色乘数

    矩阵的单元格 2,1 是绿色 -> 红色乘数(以列、行表示法)

    矩阵的单元格 1,2 是红色 -> 绿色乘数(以列、行表示法) 等等。

    要查看每个单元格的作用 - 您可以在此处使用实时颜色矩阵: https://beta.observablehq.com/@gitmullany/filter-effects-using-svg-color-matrices

    【讨论】:

    • 这个矩阵只是将整个图像设置为相同的颜色,而不管每个像素是什么颜色。我认为@CodeGust 只想将图像的黑色部分更改为新颜色,因为他们使用了“面具”这个词。
    • @bradn - 我认为操作员使用“掩码”只是为了表示重新着色 - 这可能是他接受答案的原因。
    猜你喜欢
    • 2013-07-27
    • 1970-01-01
    • 1970-01-01
    • 2017-08-30
    • 2017-05-26
    • 2012-10-29
    • 2018-03-06
    • 2019-06-13
    • 1970-01-01
    相关资源
    最近更新 更多