当前位置:首页 > JavaScript

js实现自动截图

2026-02-02 13:28:55JavaScript

使用html2canvas库实现网页截图

html2canvas是一个流行的JavaScript库,可将网页元素或整个页面转换为Canvas图像。

安装库:

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 API手动实现截图

若需轻量级方案,可直接通过Canvas API捕获指定区域:

const captureElement = document.getElementById('target');
const canvas = document.createElement('canvas');
canvas.width = target.offsetWidth;
canvas.height = target.offsetHeight;
const ctx = canvas.getContext('2d');
ctx.drawImage(target, 0, 0, canvas.width, canvas.height);

// 导出为图片
const img = document.createElement('a');
img.download = 'capture.png';
img.href = canvas.toDataURL('image/png');
img.click();

使用第三方API(如Puppeteer)

适用于服务端自动化截图:

const puppeteer = require('puppeteer');

(async () => {
  const browser = await puppeteer.launch();
  const page = await browser.newPage();
  await page.goto('https://example.com');
  await page.screenshot({ path: 'screenshot.png' });
  await browser.close();
})();

浏览器原生API(实验性)

部分浏览器支持window.captureEvents(),但兼容性较差:

js实现自动截图

window.captureEvents().then(mediaStream => {
  const track = mediaStream.getVideoTracks()[0];
  const imageCapture = new ImageCapture(track);
  imageCapture.grabFrame().then(imageBitmap => {
    const canvas = document.createElement('canvas');
    canvas.width = imageBitmap.width;
    canvas.height = imageBitmap.height;
    const ctx = canvas.getContext('2d');
    ctx.drawImage(imageBitmap, 0, 0);
    canvas.toBlob(blob => {
      const url = URL.createObjectURL(blob);
      const a = document.createElement('a');
      a.href = url;
      a.download = 'capture.png';
      a.click();
    }, 'image/png');
  });
});

注意事项

  • 跨域内容需服务器配置CORS头。
  • 动态加载资源(如字体、图片)可能需预加载。
  • 大型页面可能导致内存问题,建议分区域截图。

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

相关文章

js 实现倒计时

js 实现倒计时

实现倒计时的基本方法 使用 JavaScript 实现倒计时可以通过 setInterval 或 setTimeout 结合日期计算来完成。以下是两种常见实现方式。 使用 setInterval 实…

js实现pdf在线预览

js实现pdf在线预览

使用PDF.js实现PDF在线预览 PDF.js是由Mozilla开发的一个开源JavaScript库,可以在网页中直接渲染PDF文件。以下是实现PDF在线预览的步骤: 引入PDF.js库 在HT…

js实现求导

js实现求导

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

利用js实现

利用js实现

使用 JavaScript 实现 在 JavaScript 中,可以通过多种方式实现功能,具体取决于需求。以下是几种常见的方法: 方法一:使用原生 JavaScript // 示例代码 funct…

js实现vue路由

js实现vue路由

Vue 路由的基本实现 在 Vue.js 中实现路由功能通常使用 Vue Router 库。Vue Router 是 Vue.js 官方的路由管理器,用于构建单页面应用(SPA)。 安装 Vue R…

js实现正交

js实现正交

正交的概念 正交在数学和计算机科学中通常指两个向量垂直或线性无关。在编程中,正交性常被用于设计模块化、低耦合的系统。 向量正交判断 判断两个向量是否正交可以通过点积是否为0来实现: functio…