- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在尝试将 svg 转换为图像并提示用户下载。
var chart = $(svg.node())
.attr('xmlns', 'http://www.w3.org/2000/svg');
var width = that.svg_width;
var height = that.svg_height;
var data = new XMLSerializer().serializeToString(chart.get(0));
var svg1 = new Blob([data], { type: "image/svg+xml;charset=utf-8" });
var url = URL.createObjectURL(svg1);
var img = $('<img />')
.width(width)
.height(height);
img.attr('crossOrigin' ,'' );
img.bind('load', function() {
var canvas = document.createElement('canvas');
canvas.width = width;
canvas.height = height;
var ctx = canvas.getContext('2d');
ctx.drawImage(img.get(0), 0, 0);
canvas.toBlob(function(blob) { // this is where it fails
saveAs(blob, "test.png");
});
});
img.attr('src', url);
Chrome 抛出异常,提示“未捕获的安全错误:无法在‘HTMLCanvasElement’上执行‘toDataURL’:可能无法导出受污染的 Canvas 。”在 canvas.toBlob
本案例不涉及跨源。 svg 在我正在转换为图像并尝试加载到 Canvas 中的同一页面上。那么 Canvas 是如何被污染的呢?我错过了什么吗?
最佳答案
经过一些挖掘发现https://code.google.com/p/chromium/issues/detail?id=294129 .我的 svg 有一个 < foreignObject >(基于 d3 的图表),这就是我遇到这个问题的原因。
使用数据 uri 而不是从 blob 加载 svg 解决了我的问题
关于javascript - 使用 canvas.toBlob 污染 Canvas ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32735822/
我使用 each() 循环将多个 Canvas 元素转换为 blob,然后使用 AJAX 将其发送到服务器。 我遇到了一个相当奇怪的问题,即使 toBlob() 看起来仍然很忙,我的脚本的其余部分仍然
有许多 polyfill 可以将 Canvas 的内容转换为 Blob。在决定使用其中之一之前,想了解各种浏览器对 native 方法 canvas.toBlob() 的支持。该方法在不同浏览器中的稳
我正在使用 Cropper.js将裁剪后的图像发送到服务器,但是当我使用“convtoblob(blob)”并将 blob 附加到 formfile 然后将其发送到 Web API 时,原始图像文件名
我一直在努力寻找一种将 Canvas 保存到文件的方法。我的图片太大,无法使用dataToUrl,所以我一直在尝试各种toblob方法。似乎当使用图案填充时,toblob 不起作用。如果这有可能奏效,
我想使用 JavaScript 在客户端调整图像大小。我找到了两种解决方案,一种是使用 .toDataURL() 函数,另一种是使用 .toBlob() 函数。两种解决方案都有效。好吧,我只是好奇这两
我想用 jquery ajax 上传裁剪后的图像。因此,我从 canvas 元素创建一个 blob,将其附加到表单数据中。到目前为止,这工作得很好,但我猜我有一些同步/异步问题。我在网上搜索了 jav
我想对生成的 Blob 进行检查,这需要我将自己的变量传递给回调。然而,toBlob() only passes the Blob 。如何将我自己的变量传递给回调?或者,是否有更好的方法来完成此任务,
我可以使用下面的代码在 Chrome 和 Firefox 中下载图像,但在 Safari 中会抛出此错误: TypeError: 'undefined' is not a function (eval
我正在使用此功能保存我的 Canvas : c.toBlob(function(blob) { saveAs(blob, '@Model.DatabaseName' + '.jpg'); },
我正在使用此功能保存我的 Canvas : c.toBlob(function(blob) { saveAs(blob, '@Model.DatabaseName' + '.jpg'); },
我正在使用 canvas.toBlob() 回调方法将图像文件转换为 blob。但是我看到 toBlob 与 Microsoft Edge 浏览器不兼容。 我已尝试检测浏览器,并根据我使用的浏览器 t
我在应用程序上使用 canvas.toBlob() 函数。在 Firefox 上运行良好。 当使用 chromium 时,该功能失败。 我发现了这个问题: Which browsers (and ve
我有以下 javascript 从 Canvas 生成图像并将它们上传到服务器。 var can = document.createElement('canvas'); can.width = 600
我正在尝试将 svg 转换为图像并提示用户下载。 var chart = $(svg.node()) .attr('xmlns', 'http://www.w3.org/200
我试图在以下代码中使用 toBlob 单击按钮下载大 Canvas 图像(几千像素的高度和宽度),这似乎不起作用: document.getElementById("download_button")
我正在使用 HTMLCanvas返回 async toBlob() 之外的 blob 对象的元素功能。这个函数不返回输出值,所以我试图在外面声明一个变量并通过命令访问它。 我如何使用 JS Promi
我一直在使用此代码从 Canvas 下载图像: function fileSave1() { var dataURL = ""; var canvasSave = document.g
我使用此代码创建带有 blob url 的 img 标签: blob = canvas.toBlob(function (blob) { var newImg = window.parent.
我尝试将 Canvas 图像转换为 blob。这可以通过 toBlob() polyfile 来完成.它适用于桌面浏览器,但在 iPhone 上我没有得到任何 Blob 。大小始终为零。 这里有一个
我正在从事一个极简主义的图像创建项目,我需要能够在浏览器中创建图像,这些图像又会在服务器上使用。到目前为止,Canvas.toDataUrl()方法已经满足了我们的需求,不过我刚刚了解到Canvas.
我是一名优秀的程序员,十分优秀!