当前位置:首页 > 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实现图片预览

js实现图片预览

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

js实现论坛

js实现论坛

实现论坛的基本功能 使用JavaScript实现一个论坛需要结合前端和后端技术。前端可以使用React、Vue或Angular等框架,后端可以选择Node.js配合Express或Koa框架。数据库可…

js钟表实现

js钟表实现

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

js图片轮播的实现

js图片轮播的实现

基础图片轮播实现 使用HTML、CSS和JavaScript实现一个简单的图片轮播效果。HTML部分定义轮播容器和图片,CSS负责样式和过渡效果,JavaScript处理逻辑。 <div cl…

js实现显示隐藏

js实现显示隐藏

显示隐藏的实现方法 在JavaScript中,实现元素的显示和隐藏可以通过多种方式完成。以下是几种常见的方法: 修改CSS的display属性 通过改变元素的display属性可以在none(隐藏)…

js实现轮播代码

js实现轮播代码

基础轮播实现 使用HTML、CSS和JavaScript创建一个简单的轮播效果。HTML部分定义轮播容器和图片元素。 <div class="carousel"> <div c…