如何在SVG中导出PNG
How to export PNG within SVG
我有一些麻烦导出我的SVG,其中包含一个PNG图像。我使用D3JS和以下代码:
mysvg.append("image")
.attr("width", 299)
.attr("height", 168)
.attr("xlink:href", "image.png")
var html = d3.select("svg")
.attr("version", 1.1)
.attr("xmlns", "http://www.w3.org/2000/svg")
.node().parentNode.innerHTML;
var imgsrc = 'data:image/svg+xml;base64,'+ btoa(html);
var img = '<img src="'+imgsrc+'">';
d3.select("#chartRender").html(img);
似乎出现了一个错误:Namespace prefix xlink for href on image is not defined
。PNG图像在SVG容器中正确显示,但不能在#chartRender
中显示
你知道吗?
在画布上绘制图像
canvas = d3.select("body").append("canvas").attr("id", "newCanvas")
.attr("width", "200px").attr("height", "100px").node()
context = canvas.getContext('2d')
imageObj = new Image()
imageObj.src = params.url
imageObj.onload = -> context.drawImage(imageObj, 0, 0)
但显示数据显示空内容:(
imageData = canvas.toDataURL("image/png")
d3.select("body").append("img").datum(imageData).attr("src", (d)-> return d)
d3.select("svg").append("image").datum(imageData).attr("height", "100")
.attr("width", "200").attr("xlink:href", (d)-> return d)
你需要添加xmlns:xlink
到你的svg标签。
应该是这样的:
<svg width="xxx" height="yyy" xmlns="http://www.w3.org/2000/svg" xmlns:svg="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
.attr("xmlns:xlink", "http://www.w3.org/1999/xlink")
更新我创建了一个JSBIN来帮助我们做到这一点。
var mysvg = d3.select('#mysvg');
var src = 'http://placehold.it/350x150';
mysvg.append("image")
.attr("width", 350)
.attr("height", 150)
.attr("xlink:href", src);
var img = document.createElement('img');
img.src = src;
document.getElementById("target").appendChild(img);
它能解决你的问题吗?
相关文章:
- 将SVG下载为PNG图像
- 从画布上的SVG导出PNG
- 固定分辨率的大 svg 到 png
- 我如何将多个 svg 隐藏到一个 png 中,因为它们在 html 上
- 在Web Worker中将SVG转换为PNG
- 使用PHP将png/svg导出为单个png文件
- 当使用canvg将Highchart SVG转换为PNG时,所有文本都会出现两次——如何解决
- 在VB.net/C#或Objective-C上将JPEG或PNG转换为SVG格式
- 如何将SVG节点转换为PNG并下载给用户
- 阿巴普 :将 svg 转换为 png
- 使用 SVG 渲染引擎将 svg 转换为 png 时出现异常
- 图像(jpeg 和 png)文件如何在 SVG 文件中格式化
- 将用Javascript绘制的外部SVG文件导出为PNG图像
- 将使用 D3js 创建的 SVG 转换为 PNG
- SVG 到 PNG 下载器 PHP
- 在多边形中包含 png/svg
- 在客户端将 svg 转换为 png
- 通过画布从 svg 或 svg 输出 300 张具有正确文件名的 png 图像
- SVG文件 :如何使用Inkscape将PNG文件转换为SVG文件后获取路径标记数据
- 将带有图像标签的 Svg 转换为 PNG