一、准备工作
在进行Canvas截图时,首先需要准备好Canvas对象和一个用于展示截图的Image对象。代码如下:
const canvas = document.getElementById('myCanvas');
const ctx = canvas.getContext('2d');
const img = new Image();
其中,myCanvas
为Canvas对象的ID,需要在HTML文件中进行定义。
二、全屏截图
全屏截图常用于将整个网页截图进行保存或分享。代码如下:
// 获取网页的scrollWidth和scrollHeight
const scrollWidth = Math.max(
document.documentElement["scrollWidth"],
document.body["scrollWidth"]
);
const scrollHeight = Math.max(
document.documentElement["scrollHeight"],
document.body["scrollHeight"]
);
// 设置Canvas宽高
canvas.width = scrollWidth;
canvas.height = scrollHeight;
// 使用drawImage方法绘制整个网页
ctx.drawImage(document.documentElement, 0, 0, scrollWidth, scrollHeight, 0, 0, scrollWidth, scrollHeight);
// 将Canvas转换为图片
img.src = canvas.toDataURL('image/png');
以上代码实现了将整个网页截图并转换为图片的功能。
三、局部截图
局部截图常用于需要突出展示某个特定部分的情况下,例如一张地图图片中的某座建筑物或者一段数据表格中的某一行。代码如下:
// 获取需要截图的元素
const element = document.getElementById('section');
// 获取元素在页面中的位置
const bounds = element.getBoundingClientRect();
// 设置Canvas宽高
canvas.width = bounds.width;
canvas.height = bounds.height;
// 绘制元素
ctx.drawImage(element, bounds.x, bounds.y, bounds.width, bounds.height, 0, 0, bounds.width, bounds.height);
// 将Canvas转换为图片
img.src = canvas.toDataURL('image/png');
以上代码实现了将页面上的某个元素截图并转换为图片的功能。
四、添加水印
有时候需要在截图中添加水印,以防止被盗用或者便于识别。代码如下:
// 绘制水印
ctx.font = '30px Arial'; // 设置字体
ctx.fillStyle = 'rgba(0, 0, 0, 0.5)'; // 设置颜色
ctx.textAlign = 'center'; // 设置位置
ctx.fillText('Watermark', canvas.width/2, canvas.height/2); // 绘制文本
// 将Canvas转换为图片
img.src = canvas.toDataURL('image/png');
以上代码实现了在截图中添加水印的功能。
五、截图下载
最后,将截图作为文件进行下载。代码如下:
// 创建一个隐藏的下载链接
const downloadLink = document.createElement('a');
downloadLink.href = img.src;
downloadLink.download = 'screenshot.png';
// 触发下载事件
document.body.appendChild(downloadLink);
downloadLink.click();
document.body.removeChild(downloadLink);
以上代码实现了将截图作为文件下载的功能。