- 用于
canvas.toDataURL
获取画布内容作为图像 src
- 打开一个窗口/弹出窗口
<img>
在弹出窗口中添加一个
src
为图像分配图像 src
function saveForm() {
html2canvas(document.body, {
onrendered: function(canvas) {
var img = canvas.toDataURL("image/png");
var open = window.open('','','width=500,height=500')
open.document.write('<img id="img" style="width="400">');
open.document.getElementById('img').setAttribute('src', img);
}
});
}
测试了里面的代码onrendered
,它确实可以工作 - 但不能与 html2canvas 一起使用。
如果您在弹出窗口中右键单击图像 -> 将图像另存为,则保存的图像是有效的。
我使用setAttribute
而不是简单的原因src="..."
是,如果您将数据 src 分配为字符串,则图像会损坏。
编辑
我知道:(我认为你必须设置 HTTP 标头来强制下载,这只能由服务器完成(如果我错了,请纠正我)。我想到了像这个样机这样的服务器上的“代理”,下载.php:
<?
$src=$_POST['src'];
header('Content-Type: image/png');
header('Content-Disposition: inline; filename="download.png"');
header('Content-Length: '.count($src));
echo $src;
?>
并通过调用它
var img = canvas.toDataURL("image/png");
window.open('download.php?src='+img);
但是你会遇到很多 -Request-URI Too Large
消息,除非你所有的画布图像都是图标大小。
第二种方法——可能也是可行的方法——是img
通过ajax 保存在服务器上的一个表中,例如使用img src 调用一个脚本来保存它。此调用完成后,您可以调用另一个具有正确标头的服务器脚本来下载图像,包括之前保存的 img src。但这是一种更广泛的方法,您可以自己尝试..?