当前位置:首页 > JavaScript

js实现截图

2026-01-16 13:00:26JavaScript

使用HTML2Canvas库实现截图

HTML2Canvas是一个流行的JavaScript库,可以将网页元素或整个页面转换为Canvas图像。安装方式:

npm install html2canvas

基础用法示例:

js实现截图

import html2canvas from 'html2canvas';

const element = document.getElementById('capture-area');
html2canvas(element).then(canvas => {
  document.body.appendChild(canvas);
  const imgData = canvas.toDataURL('image/png');
  const link = document.createElement('a');
  link.download = 'screenshot.png';
  link.href = imgData;
  link.click();
});

使用Canvas API原生截图

对于简单的DOM元素截图,可以直接使用Canvas的drawImage方法:

const canvas = document.createElement('canvas');
const context = canvas.getContext('2d');
const img = new Image();

img.onload = function() {
  canvas.width = img.width;
  canvas.height = img.height;
  context.drawImage(img, 0, 0);
  const dataURL = canvas.toDataURL('image/png');
};

img.src = 'data:image/svg+xml,' + encodeURIComponent(
  '<svg xmlns="http://www.w3.org/2000/svg" width="200" height="200">' +
  '<foreignObject width="100%" height="100%">' +
  '<div xmlns="http://www.w3.org/1999/xhtml">Your HTML here</div>' +
  '</foreignObject></svg>'
);

浏览器原生API截图

现代浏览器支持MediaDevices API实现屏幕捕捉:

js实现截图

async function captureScreen() {
  try {
    const stream = await navigator.mediaDevices.getDisplayMedia({
      video: { mediaSource: 'screen' }
    });
    const videoTrack = stream.getVideoTracks()[0];
    const imageCapture = new ImageCapture(videoTrack);
    const bitmap = await imageCapture.grabFrame();

    const canvas = document.createElement('canvas');
    canvas.width = bitmap.width;
    canvas.height = bitmap.height;
    const ctx = canvas.getContext('2d');
    ctx.drawImage(bitmap, 0, 0);
    return canvas.toDataURL();
  } catch (err) {
    console.error('Error:', err);
  }
}

处理跨域资源

当截图包含跨域图片时需要设置CORS:

const img = new Image();
img.crossOrigin = 'Anonymous';
img.onload = function() {
  // 处理图片
};
img.src = 'http://example.com/image.jpg';

移动端适配方案

针对移动设备触摸事件的处理:

document.addEventListener('touchstart', handleTouch);
document.addEventListener('touchmove', handleTouch);

function handleTouch(e) {
  e.preventDefault();
  // 实现触摸截图逻辑
}

标签: 截图js
分享给朋友:

相关文章

js实现继承

js实现继承

原型链继承 通过将子类的原型指向父类的实例实现继承。子类实例可以访问父类原型上的属性和方法。 function Parent() { this.name = 'parent'; } Parent…

js实现求导

js实现求导

实现数值求导的方法 在JavaScript中实现求导通常采用数值方法,因为JavaScript不是符号计算语言。以下是常见的数值微分方法: 中心差分法 中心差分法提供较高精度的导数近似: func…

js进度条实现

js进度条实现

使用HTML和CSS创建基础结构 在HTML中创建一个容器元素用于显示进度条,通常使用<div>元素。CSS用于设置进度条的样式,包括宽度、高度、颜色和圆角等属性。 <div cl…

h5怎么实现截图并保存

h5怎么实现截图并保存

实现H5截图并保存的方法 使用HTML5的Canvas结合JavaScript可以实现截图功能。以下是一种常见的实现方式: 使用html2canvas库 html2canvas是一个流行的JavaS…

H5手机端实现长截图

H5手机端实现长截图

实现H5手机端长截图的方法 使用html2canvas库 html2canvas是一个流行的JavaScript库,可以将网页内容渲染为Canvas图像。通过遍历页面所有元素,将其绘制到Canvas上…

js 实现超链接

js 实现超链接

使用 HTML 的 <a> 标签 在 JavaScript 中动态创建超链接可以通过操作 DOM 实现。通过 document.createElement 创建一个 <a> 元…