屏幕截图:
new html2canvas(document.getElementById('app')).then(canvas => { //id="app"是需要截图的区域
// canvas为转换后的Canvas对象
let oImg = new Image();
oImg.src = canvas.toDataURL(); // 导出图片
document.body.appendChild(oImg); // 将生成的图片添加到body
});
网页截图:
(有一个bug,本地加载的图片可以截图到内容,但如果是通过请求后台接口得到的图片就截图不到图片内容了)
var height = $(document).height() //获取需要截图内容的高度
//克隆节点,默认为false,不复制方法属性,为true是全部复制。
var cloneDom = $("#app").clone(true);//克隆要截图的区域
//设置克隆节点的css属性,因为之前的层级为0,我们只需要比被克隆的节点层级低即可。
cloneDom.css({
//"display": "none",
"position": "absolute",
"top": "0px",
"z-index": "-111",
"height": height
});
//将克隆节点动态追加到body后面。
$("body").append(cloneDom);
console.log(cloneDom)
html2canvas(cloneDom[0]).then(function(canvas){
function getBlobBydataURI(dataURI,type){
var binary = atob(dataURI.split(',')[1]);
var array = [];
for(var i = 0; i < binary.length; i++) {
array.push(binary.charCodeAt(i));
}
return new Blob([new Uint8Array(array)], {type:type });
}
var imageData = canvas.toDataURL("image/jpeg");
var formData = new FormData();
var $Blob= getBlobBydataURI(imageData,'image/jpeg');
let reader = new FileReader();
reader.readAsDataURL($Blob);
reader.onload = function(e) {
var img = document.createElement("img");
img.src = e.target.result;
document.body.appendChild(img);
console.log(img)
}
formData.append('file',$Blob);
formData.append('type',1)
var timestamp = new Date().getTime();
formData.append('key',timestamp + '.png');//得到以当前时间命名的图片文件
for (var pair of formData.entries()) {
if(typeof value == 'object'){
if(value.hasOwnProperty("name")){
pair[1].name = "1.jpg"
}
}
}
//上传
// $.ajax({
// url:'http://devh.bugegaming.com/api2/turntable/upload',
// type:'post',
// data:formData,
// async: false,
// crossDomain: true,
// contentType: false,
// processData: false,
// success: function(data){
//
// }
// });
})
https://sdeno.com/wp-content/uploads/2020/08/html2canvas.min.js