У меня есть рабочие фильтры CSS для элементов <img />
, как я хочу.
eg.
filter: brightness(1) contrast(67%) saturate(250%) grayscale(0%) invert(0%) hue-rotate(330deg) sepia(40%) blur(0px);
Моя цель — применить те же свойства фильтра к тегу <image />
внутри файла SVG.
Однако такие вещи, как
<g style="-webkit-filter: contrast(67%) saturate(250%);">
<image xlink:href="image.jpg" />
</g>
or
<image xlink:href="image.jpg" style="-webkit-filter: contrast(67%) saturate(250%) sepia(40%)"/>
не работает.
Поэтому, скорее всего, мне придется комбинировать фильтры CSS с фильтрами SVG.
На веб-платформе.org я нашел представление SVS определенных эффектов фильтра CSS, например:
инвертировать: https://docs.webplatform.org/wiki/css/functions/invert а>
затем я попытался объединить сгенерированные фильтры с feMerge
.
<filter id="clip_1-filter-90117969876336">
<feComponentTransfer in="SourceGraphic" result="brightness-filter">
<feFuncR type="linear" slope="22"></feFuncR>
<feFuncG type="linear" slope="22"></feFuncG>
<feFuncB type="linear" slope="22"></feFuncB>
</feComponentTransfer>
<feComponentTransfer in="brightness-filter" result="contrast-filter">
<feFuncR type="linear" slope="-15" intercept="7"></feFuncR>
<feFuncG type="linear" slope="-15" intercept="7"></feFuncG>
<feFuncB type="linear" slope="-15" intercept="7"></feFuncB>
</feComponentTransfer>
<feColorMatrix in="contrast-filter" result="grayscale-filter" type="matrix" values="
1 0 0 0 0
0 1 0 0 0
0 0 1 0 0
0 0 0 1 0"></feColorMatrix>
<feComponentTransfer in="SourceGraphic" result="invert-filter">
<feFuncR type="table" tableValues="0 1"></feFuncR>
<feFuncG type="table" tableValues="0 1"></feFuncG>
<feFuncB type="table" tableValues="0 1"></feFuncB>
</feComponentTransfer>
<feMerge>
<feMergeNode in="grayscale-filter"></feMergeNode>
</feMerge>
</filter>
Однако результаты далеки от ожидаемых.
Каков правильный способ перевода фильтров CSS в SVG?