当前位置:首页 > JavaScript

js 实现截图

2026-01-16 12:58:49JavaScript

使用html2canvas库实现截图

html2canvas是一个流行的JavaScript库,可将HTML元素转换为Canvas,进而导出为图片。

安装库:

js 实现截图

npm install html2canvas

基础代码示例:

import html2canvas from 'html2canvas';

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

使用Canvas的toDataURL方法

若需截取Canvas自身内容,可直接使用其原生API:

js 实现截图

const canvas = document.getElementById('myCanvas');
const dataURL = canvas.toDataURL('image/jpeg', 0.8); // 80%质量
console.log(dataURL); // 输出Base64编码

浏览器原生API:MediaDevices.getDisplayMedia

适用于截取屏幕、窗口或标签页内容:

async function captureScreen() {
  const stream = await navigator.mediaDevices.getDisplayMedia({ video: true });
  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);
  videoTrack.stop();

  // 导出图片
  canvas.toBlob(blob => {
    const url = URL.createObjectURL(blob);
    const a = document.createElement('a');
    a.href = url;
    a.download = 'screen-capture.png';
    a.click();
  }, 'image/png');
}

注意事项

  • 跨域限制:若截图内容包含跨域图片,需确保图片服务器允许CORS。
  • 性能优化:对大范围DOM截图时,html2canvas可能较慢,建议限制截图区域。
  • 样式兼容性:某些CSS属性(如filter、transform)可能导致渲染差异。

扩展方案:第三方服务

若需云端截图,可考虑:

  • Puppeteer:通过Headless Chrome生成截图,适用于Node.js环境。
  • APIfox:提供网页截图API,直接通过HTTP请求调用。

以上方法覆盖了从前端DOM到屏幕的常见截图场景,可根据具体需求选择。

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

相关文章

js 实现vue

js 实现vue

实现 Vue 的核心功能 在 JavaScript 中实现 Vue 的核心功能需要模拟数据绑定、虚拟 DOM 和响应式系统。以下是一个简化版的实现思路: 响应式系统 通过 Object.define…

vue.js实现轮播

vue.js实现轮播

Vue.js 实现轮播功能 使用第三方库(推荐) Vue.js 生态中有许多成熟的轮播组件库,例如 vue-awesome-swiper 或 swiper,它们功能丰富且易于集成。 安装 swipe…

js实现跳转

js实现跳转

使用 window.location 跳转 通过修改 window.location.href 实现页面跳转,这是最常用的方法。 window.location.href = 'https://…

js实现拖拽

js实现拖拽

实现拖拽的基本步骤 通过监听鼠标事件(mousedown、mousemove、mouseup)实现拖拽功能。以下是核心代码逻辑: const draggableElement = document.…

js 实现继承

js 实现继承

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

js实现图片预览

js实现图片预览

使用FileReader API实现图片预览 通过FileReader对象读取用户选择的图片文件并显示预览: const input = document.getElementById('imag…