当前位置:首页 > JavaScript

js实现自动截图

2026-04-07 07:01:41JavaScript

使用HTML2Canvas库实现网页截图

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

npm install html2canvas

基础用法示例:

import html2canvas from 'html2canvas';

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

使用Puppeteer实现无头浏览器截图

Puppeteer是Google开发的Node库,适合服务器端截图:

js实现自动截图

npm install 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();
})();

纯Canvas API实现

原生Canvas API也可实现简单截图:

js实现自动截图

const canvas = document.createElement('canvas');
const context = canvas.getContext('2d');
canvas.width = window.innerWidth;
canvas.height = window.innerHeight;

context.drawWindow(window, 0, 0, canvas.width, canvas.height, 'rgb(255,255,255)');

const imgData = canvas.toDataURL('image/png');
const newImg = document.createElement('img');
newImg.src = imgData;
document.body.appendChild(newImg);

浏览器原生API(实验性)

现代浏览器支持MediaDevices API:

navigator.mediaDevices.getDisplayMedia({ video: true })
  .then(stream => {
    const videoTrack = stream.getVideoTracks()[0];
    const imageCapture = new ImageCapture(videoTrack);
    return 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);
    document.body.appendChild(canvas);
  });

注意事项

  • 跨域内容可能无法被正确渲染
  • iframe内容需要特殊权限处理
  • 大尺寸截图可能造成内存问题
  • 某些CSS属性(如position: fixed)可能导致渲染异常

各方案选择建议:

  • 前端页面截图优先考虑HTML2Canvas
  • 需要完整页面渲染时使用Puppeteer
  • 简单需求可用原生Canvas API
  • 浏览器原生API尚处于实验阶段

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

相关文章

js实现换肤

js实现换肤

使用CSS变量实现换肤 通过CSS变量可以轻松实现主题切换功能。CSS变量在根元素中定义,通过JavaScript动态修改这些变量值。 :root { --primary-color: #349…

js实现vr

js实现vr

使用WebXR API实现VR体验 WebXR是浏览器中实现VR和AR体验的标准API,它取代了早期的WebVR。现代浏览器如Chrome、Edge和Firefox已支持WebXR。 // 初始化W…

js实现游标

js实现游标

使用JavaScript实现游标 在JavaScript中,可以通过操作DOM元素的cursor样式属性来实现自定义游标效果。以下是几种常见的实现方法: 修改默认鼠标指针样式 通过CSS的curso…

js钟表实现

js钟表实现

实现JavaScript钟表的基本方法 创建一个简单的JavaScript钟表可以通过以下步骤完成,涵盖数字和模拟两种形式。 数字钟表实现 HTML结构只需一个显示时间的容器: <div i…

js实现密码

js实现密码

密码强度验证 使用正则表达式验证密码强度是一种常见方法。以下代码检查密码是否包含大小写字母、数字和特殊字符,且长度至少为8位: function checkPasswordStrength(pass…

js实现跑马灯

js实现跑马灯

实现跑马灯效果 使用HTML和JavaScript可以轻松实现跑马灯效果。以下是两种常见的实现方式: HTML结构 <div id="marquee"> <span>…