运用html2canvas完成浏览器截图,必须在服务器环境下
才完成。
作用
html2canvas能够经由过程纯JS对浏览器端经行截屏,但截图的精确度还有待进步,部份css不可辨认
,所以在canvas中不能圆满显现原画面款式
/*多行溢出省略就不可,只能超越隐蔽了*/
.book_inf{
position: relative;
overflow : hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
}
支撑的浏览器
- Firefox 3.5+
- Google Chrome
- Opera 12+
- IE9+
- Safari 6+
基础语法
/*参数:
* #screenshots 所须要截图的元素id,截图后要实行的函数,
* backgroundColor 设置项背景致
* canvas为截图后返回的末了一个canvas
*/
function screenshotsImg(){
html2canvas(document.querySelector("#screenshots"),{
backgroundColor: 'transparent',// 设置背景通明
}).then(canvas => {
canvasTurnImg(canvas) //保留的图片花样转换要领
});
}
可用设置项
参数称号 | 范例 | 默许值 | 形貌 |
---|---|---|---|
allowTaint | boolean | false | Whether to allow cross-origin images to taint the canvas—许可跨域 |
background | string | #fff | Canvas background color, if none is specified in DOM. Set undefined for transparent—canvas的背景色彩,假如没有设定默许白色此处被坑,我改成backgroundColor可用 |
height | number | null | Define the heigt of the canvas in pixels. If null, renders with full height of the window.—canvas高度设定 |
letterRendering | boolean | false | Whether to render each letter seperately. Necessary if letter-spacing is used.—在设置了字间距的时刻有效 |
logging | boolean | false | Whether to log events in the console.—在console.log()中输出信息 |
proxy | string | undefined | Url to the proxy which is to be used for loading cross-origin images. If left empty, cross-origin images won’t be loaded.—代办地点 |
taintTest | boolean | true | Whether to test each image if it taints the canvas before drawing them—是不是在衬着前测试图片 |
timeout | number | 0 | Timeout for loading images, in milliseconds. Setting it to 0 will result in no timeout.—图片加载耽误,默许耽误为0,单元毫秒 |
width | number | null | Define the width of the canvas in pixels. If null, renders with full width of the window.—canvas宽度 |
useCORS | boolean | false | Whether to attempt to load cross-origin images as CORS served, before reverting back to proxy–跨域代办 |
设置图片花样
1、从canvas中直接提取图片元数据
// 图片导出为 png 花样
var type = 'png';
var imgData = canvas.toDataURL(type);
2、将mime-type改成image/octet-stream,强迫让浏览器直接download
/**
* 猎取mimeType
* @param {String} type the old mime-type
* @return the new mime-type
*/
var _fixType = function(type) {
type = type.toLowerCase().replace(/jpg/i, 'jpeg');
var r = type.match(/png|jpeg|bmp|gif/)[0];
return 'image/' + r;
};
// 加工image data,替代mime type
imgData = imgData.replace(_fixType(type),'image/octet-stream');
3、图片download到当地
/**
* 在当地举行文件保留
* @param {String} data 要保留到当地的图片数据
* @param {String} filename 文件名
*/
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);
};
// 下载后的文件名
var filename = 'baidufe_' + (new Date()).getTime() + '.' + type;
// download
saveFile(imgData,filename);