我正在尝试创建一个 SVG,其中使用各种混合模式将黑色或白色方块覆盖在图像上。我正在为图片使用带有 feImage 基元的滤镜,使用 feColorMatrix 使其部分透明,并使用 feBlend 将其与正方形混合。normal
混合模式按我的预期工作,但没有multiply
。这是我得到的:
对于与白色相乘(中下正方形),我希望它根本不会使图像变亮,无论不透明度如何,因为与白色相乘基本上就像乘以 1。对于黑色(中上正方形),我希望它根据图像的透明度使图像变暗。这些是我在 GIMP 中玩耍时发生的事情。
SVG 规范在这里有各种混合模式的公式,如果你想知道的话(我不能发布超过 2 个与我目前的声誉相关的链接,抱歉)。www.w3.org/TR/SVG/filters.html#feBlendElement
我认为问题在于:
在我的过滤器中,我实际上将不透明度应用于feImage
,而不是SourceGraphic
,只是因为尽管进行了很多实验,但我无法弄清楚如何以相反的方式进行操作。理想情况下,正方形是部分透明的,然后覆盖在图像上。设置s不能正常工作,也不能设置 s 本身的in="SourceGraphic"
属性(它们似乎在与图像混合之前与默认的白色 svg 背景混合)。我确定有一些简单的解决方案,但我就是找不到。feColorMatrix
opacity
rect
请告诉我是否有任何不清楚的地方。任何帮助表示赞赏:)