SVG feTurbulence 输出太透明

问题描述 投票:0回答:1

我有一个 feTurbulence 过滤器,可以生成 SVG 格式的云。我无法将不透明度调整为不太透明。云彩映衬着蓝天和一些白色的星星。透过云层,可以看到星星!因为下面的云不是不透明或蓝色的。这是 svg:

    <svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" fill-rule="evenodd" clip-rule="evenodd" image-
rendering="optimizeQuality" shape-rendering="geometricPrecision" text-rendering="geometricPrecision" viewBox="0 
0 1800 300">
    <defs>
    <filter id="a" filterUnits="userSpaceOnUse">
    <feTurbulence type="fractalNoise" seed="3" baseFrequency="0.05" numOctaves="6" result="noise1"/>
    <feGaussianBlur in="SourceGraphic" stdDeviation="20"/>
    <feDisplacementMap in="blur1" scale="40" in2="noise1" result="cloud1"/>
    <feMerge>
    <feMergeNode in="cloud1"/>
    </feMerge>
    </filter>
    </defs>
    <g fill="#FFF" stroke="#FFF" stroke-width="0" filter="url(#a)">
    <rect x="500" y="45" width="350" height="12"/>
    <rect x="960" y="65" width="300" height="18"/>
    </g>
    </svg>

我尝试将不透明度设置为 1(无论是滤镜还是对象),以使用 feMerge、feComposite 以及 Gemini 提供的其他一些建议。到目前为止,没有任何效果。我需要让云朵不显示它们后面的星星,所有云朵下面都应该是蓝色的(蓝色背景下的白云,而不是蓝色背景下的白云,里面有白点)。

svg-filters
1个回答
0
投票

您可以将 alpha -> 亮度颜色矩阵添加到过滤器的末尾,如下所示:

  <feColorMatrix type="matrix" values="0 0 0 2 0
                                       0 0 0 2 0 
                                       0 0 0 2 0 
                                       0 0 0 8 0"/>
</filter>

调整数字,直到找到你喜欢的东西

© www.soinside.com 2019 - 2024. All rights reserved.