如何将 SVG 形状替换为图像
How can I replace an SVG shape with an image?
给定一个SVG,就像这个谷歌可视化示例中的SVG一样,在svg上画了这样的圆圈:
<circle cx="448.0843694002127" cy="236.6677163333033" r="12" stroke="#cccccc" stroke-width="1" fill="#0000ff"/>
我尝试使用 firebug 手动将其替换为相同 x/y 坐标的示例图像,例如将上面的代码替换为:
<img width="50px" height="50px" cy="135.71439117815066" cx="343.43783232923863" xlink:href="http://upload.wikimedia.org/wikipedia/commons/thumb/1/1e/Flag_of_Fukuyama%2C_Hiroshima.png/320px-Flag_of_Fukuyama%2C_Hiroshima.png">
但这不起作用(似乎没有任何内容可以正确呈现)。我认为也许使用 cx/cy 是问题所在,所以我尝试将它们切换到常规的 x/y 属性:
<img width="50px" height="50px" xlink:href="http://upload.wikimedia.org/wikipedia/commons/thumb/1/1e/Flag_of_Fukuyama%2C_Hiroshima.png/320px-Flag_of_Fukuyama%2C_Hiroshima.png" x="343.43783232923863" y="135.71439117815066">
再次,不行。
我尝试了这里使用的技术:
SVG 是否支持嵌入位图图像?
但同样,它没有在 SVG 中渲染图像。
我检查了整个堆栈溢出,但只找到了有关如何用图像平铺圆圈的信息:
将背景图像 (.png) 添加到 SVG 圆形
这有自己的一组图像,因为图案只是平铺,不能为每个形状调整大小。
有没有可靠的方法可以做到这一点?理想情况下,我想遍历每个圆圈,并将其替换为一个图像,该图像的大小将调整为它所替换的圆圈。
我下载了SVG并手动添加了图像,但是出现以下错误:
XML 分析错误:前缀未绑定到命名空间
位置:(已删除 为了隐私)
第 2 行,第 1 列:
<image width="50px" height="50px" y="135.71439117815066" x="343.43783232923863" xlink:href="http://upload.wikimedia.org/wikipedia/commons/thumb/1/1e/Flag_of_Fukuyama%2C_Hiroshima.png/320px-Flag_of_Fukuyama%2C_Hiroshima.png">
^
你想要的元素<image>
不是<img>
。
属性cx
和cy
在<image>
元素上毫无意义。您可以改用x
和y
(如第二次尝试),并注意您需要指定非零width
并在<image>
元素上height
(再次尝试)。有关详细信息,请参阅 svg 规范。
只需使用图像创建蒙版即可。 绘制圆圈或引用蒙版的任何其他图形。
- 用Javascript替换图像和图像标题/alt文本
- 用 jquery 替换图像和类
- 用于多次替换图像的 Jquery 按钮
- JavaScript/PHP 从数据库动态替换图像源
- 单击时切换和替换图像
- 重新加载/替换图像 jQuery 作为
- 中的列表项
- 快速替换图像 src 时 Firefox 中的内存使用情况
- 用不同的图像/按钮替换图像 - javascript
- 检测网址/链接,并用 img 标签替换图像,用 href 替换链接
- 使用Kinetic.js html5画布替换图像上的文本
- 用javascript替换图像上的src
- 用jquery替换图像文件名
- 用Aviary/Creave SDK图像编辑器替换图像
- 在CLick上替换图像SRC
- jquery按时间间隔替换图像
- 用jQuery替换图像
- 在点击时用视频替换图像
- 在使用图像的地方替换图像- Javascript
- 在表格单元格内替换图像不起作用
- 一个错误事件添加一个新类并计算它替换图像源的次数