html2canvas可以通过纯JS对浏览器端进行截屏,但截图的精确度还有待提高,部分css不可识别,所以在canvas中不能完美呈现原画面样式
Github:html2canvas
这里有个坑,不要下载最高版本的js,有很多坑。我从1.0降下来了。我用的是0.5版本的
这个是我在用的0.5版本: html2canvas.min.js
在介绍这个插件前先科普一下软件的版本号.
html代码结构
<h2 onclick="aa();">点击复制图片</h2>
<h2 onclick="bb();">点击下载图片</h2>
<div id="capture" style="padding: 10px; background: #f5da55">
<h4 style="color: #000; ">Hello world!</h4>
<img src="abc.jpg" width="200" height="200"><!-- 图片只能放在当前服务器才能用 -->
</div>
js代码结构
function aa(){
html2canvas(document.getElementById('capture'), {
onrendered: function(canvas) {
canvas.setAttribute('id','thecanvas'); //添加属性
document.body.appendChild(canvas);
},
background: "#ffffff", //canvas的背景颜色,如果没有设定默认透明
logging: true, //在console.log()中输出信息
width: 300, //图片宽
height: 300, //图片高
useCORS: true, // 【重要】开启跨域配置
});
}
function bb(){
var oCanvas = document.getElementById("thecanvas");
/* 参考
Canvas2Image.saveAsPNG(oCanvas); // 这将会提示用户保存PNG图片
Canvas2Image.saveAsJPEG(oCanvas); // 这将会提示用户保存JPG图片
Canvas2Image.saveAsBMP(oCanvas); // 这将会提示用户保存BMP图片
// 返回一个包含PNG图片的<img>元素
var oImgPNG = Canvas2Image.saveAsPNG(oCanvas, true);
// 返回一个包含JPG图片的<img>元素
var oImgJPEG = Canvas2Image.saveAsJPEG(oCanvas, true);
// 返回一个包含BMP图片的<img>元素
var oImgBMP = Canvas2Image.saveAsBMP(oCanvas, true);
// 这些函数都可以接受高度和宽度的参数
// 可以用来调整图片大小
// 把画布保存成100x100的png格式
Canvas2Image.saveAsPNG(oCanvas, false, 100, 100);
*/
/*自动保存为png*/
// 获取图片资源
var img_data1 = Canvas2Image.saveAsPNG(oCanvas, true).getAttribute('src');
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);
};
(心里在想:什么狗屁插件根本不管用 图片都截取不了)
原因:程序必须放在服务器下运行,不然的话网页中的图片是出不来的
html2canvas 只能在服务器中抓取img
这个版本必须要用稳定版的,不能用最高的版本,因为那应该是测试版。最好用稳定版的!
用的版本不对的话,很多功可能用不了。