首先两部分js代码要分开,不能在一起加载。
第一部分:
html2canva 需要页面或者ajax全部完成以后再进行一次
<script src="/static/js/html2canvas.min.js"></script>
<script src="/static/js/base64.js"></script>
<script src="/static/js/canvas2image.js"></script>
var canvass = ""
html2canva = function () {
html2canvas(ahaibao, {
allowTaint: false, //允许加载跨域的图片
taintTest: true, //在渲染前测试图片(没整明白有啥用)
useCORS: true, //使用跨域(当allowTaint为true时这段代码没什么用,下面解释)
onrendered: function (canvas) {
//添加属性
canvas.setAttribute('id', 'thecanvas');
//读取属性值
canvass = canvas
// var value= canvas.getAttribute('id');
//document.getElementById('objcanvas').innerHTML = '';
//document.getElementById('objcanvas').appendChild(canvas);
objcanvas.appendChild(canvas);
console.log(objcanvas)
}
});
}
以上为将div转换为canvas,下面需要获取canvas的src属性赋值给img
第二部分:
saveimg = function () {
//var oCanvas = document.getElementById("thecanvas");
document.getElementsByClassName("contai")[0].style.opacity = "0.2"
document.getElementsByClassName("contai")[0].style.zIndex = 88
document.getElementById("images").style.display = "block"
var oCanvas = canvass;
/*自动保存为png*/
// 获取图片资源
var img_data1 = Canvas2Image.saveAsPNG(oCanvas, true).getAttribute('src');
var img = new Image();
img.src = img_data1
img.className = "newimgclass"
$(".newimgclass").remove()
document.getElementById("images").appendChild(img)
console.log(objcanvas.getElementsByTagName("img")[0])
return//或者以下代码进行保存择其一即可
Canvas2Image.saveAsPNG(oCanvas, true).setAttribute("crossOrigin", 'Anonymous')
saveFile(img_data1, 'richer.png');
/*下面的为原生的保存,不带格式名*/
// 这将会提示用户保存PNG图片
// Canvas2Image.saveAsPNG(oCanvas);
// saveFile(img_data1, 'richer.png');
}
// 保存文件函数
var saveFile = function (data, filename) {
var save_link = document.createElementNS('http://www.w3.org/1999/xhtml', 'a');
save_link.href = data;
save_link.download = filename;
var event = document.createEvent('MouseEvents');
event.initMouseEvent('click', true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
save_link.dispatchEvent(event);
};