Поддерживает ли SVG встраивание растровых изображений?
является ли SVG-изображение чисто векторным или мы можем объединить растровые изображения в SVG-изображение ? Как насчет преобразований, применяемых к растровым изображениям (перспектива, сопоставления и т. д.) ?
редактировать: изображения могут быть включены в SVG по ссылке. См.http://www.w3.org/TR/SVG/struct.html#ImageElement. Мой вопрос был в том, могут ли растровые изображения быть включены в svg, чтобы изображение svg было автономным. В противном случае, когда изображение SVG отображаемая ссылка должна быть выполнена, а изображение загружено. По-видимому.файлы SVG просто XML-файлы.
5 ответов
Да, вы можете ссылаться на любое изображение из <image>
элемент. И вы можете использовать uri данных сделать svg полностью автономным. Пример:
<image width="100" height="100" xlink:href="data:image/png;base64,...">
точки-это то, где вы добавляете закодированные данные base64, Редакторы векторной графики, которые поддерживают svg, обычно имеют возможность сохранения со встроенными изображениями. В противном случае существует множество инструментов для кодирования в base64 и из него.
вот полный пример из svg объекта testsuite.
Я разместил скрипку здесь, показывая данные, удаленные и локальные изображения, встроенные в SVG, внутри HTML-страницы:
<!DOCTYPE html>
<html>
<head>
<title>SVG embedded bitmaps in HTML</title>
<style>
body{
background-color:#999;
color:#666;
padding:10px;
}
h1{
font-weight:normal;
font-size:24px;
margin-top:20px;
color:#000;
}
h2{
font-weight:normal;
font-size:20px;
margin-top:20px;
}
p{
color:#FFF;
}
svg{
margin:20px;
display:block;
height:100px;
}
</style>
</head>
<body>
<h1>SVG embedded bitmaps in HTML</h1>
<p>The trick appears to be ensuring the image has the correct width and height atttributes</p>
<h2>Example 1: Embedded data</h2>
<svg id="example1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<image x="0" y="0" width="5" height="5" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg=="/>
</svg>
<h2>Example 2: Remote image</h2>
<svg id="example2" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<image x="0" y="0" width="275" height="95" xlink:href="http://www.google.co.uk/images/srpr/logo3w.png" />
</svg>
<h2>Example 3: Local image</h2>
<svg id="example3" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<image x="0" y="0" width="136" height="23" xlink:href="/img/logo.png" />
</svg>
</body>
</html>
можно использовать URI данных для предоставления данных изображения, например:
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<image width="20" height="20" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg=="/>
</svg>
изображение будет проходить все обычные преобразования svg.
но этот метод имеет недостатки, например, изображения не будет кэшироваться браузером
вы можете использовать data:
URL-адресом для встраивания кодированной версии изображения Base64. Но он не очень эффективен и не рекомендовал бы встраивать большие изображения. По какой причине ссылка на другой файл невозможна?