svg - SVG嵌套过滤器使白色透明
问题描述
我正在尝试一组噪声/静态纹理。我的目标是创建一个看起来像这样的纹理:GOAL
而且我在获取静态纹理并将其应用于饱和矩阵的输出方面已经取得了相当大的进展,有关更多上下文,请参见此处最右侧的第 5 条
`<filter x="0%" y="0%" width="100%" height="100%" id="noiseMatrix3" filterUnits="objectBoundingBox" color-interpolation-filters="sRGB">
<feTurbulence type="fractalNoise" result="f1" stitchTiles="noStitch" baseFrequency="0.2" numOctaves="1" seed="2" />
<feColorMatrix type="matrix"
values="-11 0 0 0 6
-11 0 0 0 6
-11 0 0 0 6
0 0 0 0 1" in="f1" result="f2" />
<feColorMatrix type="saturate" in="SourceGraphic" values=".6" result="f4"/>
<feComposite in="f2" in2="f4" result="f5" operator="arithmetic" k1="0" k2="1" k3="1" k4="0"/>
</filter>`
但是,代替白色纹理,我希望看到源图像(即照片中的粉红色渐变)。我怀疑它与将白色值转换为 alpha 有关。但是,当我尝试luminanceToAlpha
先过滤噪声然后合并时,我不得不使用不同的运算符,并且产生的噪声没有继承饱和过滤器的颜色。
解决方案
我认为您正在寻找乘法而不是加法-k 的这种组合更适合您的 feComposite/算术
<filter x="0%" y="0%" width="100%" height="100%" id="noiseMatrix3" filterUnits="objectBoundingBox" color-interpolation-filters="sRGB">
<feTurbulence type="fractalNoise" result="f1" stitchTiles="noStitch" baseFrequency="0.2" numOctaves="1" seed="2" />
<feColorMatrix type="matrix"
values="-11 0 0 0 6
-11 0 0 0 6
-11 0 0 0 6
0 0 0 0 1" in="f1" result="f2" />
<feColorMatrix type="saturate" in="SourceGraphic" values=".6" result="f4"/>
<feComposite in="f2" in2="f4" result="f5" operator="arithmetic" k1="1" k2="0" k3=".6" k4="0" />
</filter>
推荐阅读
- php - 为什么当我点击按钮时没有任何反应?
- sql - 从表中的多个列中搜索特定值
- c# - dotnetfiddle.net 在某些情况下会生成换行符 \n 而不是 \r\n
- vb.net - 需要编辑代码以获取两个字符串之间的所有字符串(仅获取第一个)
- karate - 空手道:匹配 xml 中的重复元素
- c++14 - Collect2:没有定义的错误引用方法
- python-2.7 - 如何在 python 2.7 中重新启动 python?
- java - 使用 JPA 将字符串名称作为 Id
- google-cloud-endpoints - Google Cloud Endpoints 是否仅适用于 REST?
- java - 将 ElasticSearch LowLevelRestClient 的响应映射到 Bean