【发布时间】:2018-01-19 07:42:01
【问题描述】:
如何结合 svg 过滤器来获得两者:
- “斑驳”的纹理和
- 单一色谱(例如不同级别的蓝白)?
我可以使用feTurbulence 过滤器来获得“斑点”效果。我也知道feColorMatrix 过滤器可以使图像去饱和,即“丢失”颜色并将图像转换为灰度。但是,我无法在前者之后将它们结合起来做后者。当我尝试过时,feTurbulence 滤镜的“彩虹”着色效果似乎仍然存在。我的(中间)想要的结果是灰度图像。除此之外,我想将该灰度图像转换为单一颜色,例如将其从灰白光谱转换为蓝白光谱。也许这些需要在单独的步骤中进行,或者可以将它们组合在一个步骤中。
我在下面展示了将feTurbulence 过滤器(与feComposite 过滤器结合使用)应用于某些文本和svg 形状的代码。此代码在 Google Chrome 中适用于我,但我尚未在其他浏览器中检查它(我目前也不需要它)。如果您正在使用此过滤器不起作用的浏览器阅读此问题,此处提供了输出的屏幕截图:
我最终想将其转换为类似以下的内容(我使用图像处理软件而不是网络技术创建的):
我真的不需要通用的跨浏览器解决方案;我只需要它在 Chrome 中工作。
.filtered{
filter: url(#filter);
font-size: 100px;
}
p {
font-size: 100px;
}
<svg width="0" height="0">
<defs>
<filter id="filter">
<feTurbulence type="fractalNoise" result="TURBULENCE" baseFrequency="0.1" numOctaves="5" seed="2" />
<feComposite operator="in" in="TURBULENCE" in2="SourceAlpha" />
</filter>
</defs>
</svg>
<div class="filtered">
Some Text<br/>
<svg>
<rect x="10" y="10" width="300" height="100" fill="black" />
</svg>
</div>
【问题讨论】:
标签: svg svg-filters