Заполнение шаблона изображения svg не рендерится в html

У меня есть изображение SVG, созданное элементами пути, и элементы пути находятся внутри тегов g, которые преобразуют и применяют заливку к элементам пути. Заполнение, которое я использовал, было шаблоном, который был предопределен в теге defs. Элемент pattern содержит теги изображений, которые ссылаются на oth

Теперь проблема: когда я поместил код SVG непосредственно в HTML, он работал нормально; но изображение должно быть гибким для изменения размера, поэтому оно должно быть в тегах img. К сожалению, когда я связываю svg внешне, заливка на элементах path становится прозрачной. Я думаю, что проблема заключается в том, что изображение не отображается, потому что, когда я заменяю заливку простым шестнадцатеричным цветом, он работает нормально.

Вот svg:

<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="232" height="158">
        <defs>
            <filter id="contrast">
                <feComponentTransfer>
                  <feFuncR type="linear" slope="25" intercept="-(0.5 * 25) + 0.5"></feFuncR>
                  <feFuncG type="linear" slope="25" intercept="-(0.5 * 25) + 0.5"></feFuncG>
                  <feFuncB type="linear" slope="100" intercept="-(0.5 * 100) + 0.5"></feFuncB>
                </feComponentTransfer>
             </filter>
            <pattern id="bg1" patternUnits="userSpaceOnUse" width="1000" height="3000">
                <image xlink:href="svg_bg.png" x="0" y="-25" width="2200" height="1800" style="filter: url(#contrast);"></image>
            </pattern>
        </defs>
        <g transform="scale(0.5,0.5)" stroke="none" fill="url(#bg1)">
            <path d="M150 0 L75 200 L225 200 Z" />
        </g>
    </svg>

2 ответа

Решение

Когда используется в контексте изображения, то есть через <img> Фоновое изображение tag или css SVG-файлы должны быть в одном файле для защиты конфиденциальности пользователя.

Вам нужно внедрить файл svg_bg.png в файл SVG в качестве URL-адреса данных, чтобы это работало.

Вы должны проверить числа в координатах x а также y везде и href к svb_bg.png,

Демо для вас код: http://jsbin.com/diwoduheze/1/

Другие вопросы по тегам