查看: 429|回复: 3

[文章教程] 请帮我写一个网页内用 js 实现当前页面截图的功能

[复制链接]
邓伟 发表于 2024-4-9 12:47:12 | 显示全部楼层 |阅读模式
本帖最后由 邓伟 于 2024-4-9 12:48 编辑

以下是一个使用JavaScript实现当前页面截图功能的示例代码:
先看效果:


1712637540561.png
1712637564688.png
1712637621960.png
1712637686394.png


现代浏览器提供了名为navigator.mediaDevices.getDisplayMedia()的API,它可以用于获取屏幕的媒体流,从而实现截图功能。下面是使用此API实现截图的示例代码:

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4.     <meta charset="UTF-8">
  5.     <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6.     <title>屏幕截图</title>
  7. </head>
  8. <body>
  9.     <h1>屏幕截图</h1>
  10.     <button onclick="captureScreen()">截图</button>
  11.     <div id="screenshotContainer"></div>

  12.     <script>
  13.         async function captureScreen() {
  14.             try {
  15.                 const stream = await navigator.mediaDevices.getDisplayMedia({ video: true });

  16.                 const videoTrack = stream.getVideoTracks()[0];
  17.                 const imageCapture = new ImageCapture(videoTrack);

  18.                 const bitmap = await imageCapture.grabFrame();
  19.                 const canvas = document.createElement('canvas');
  20.                 canvas.width = bitmap.width;
  21.                 canvas.height = bitmap.height;
  22.                 const ctx = canvas.getContext('2d');
  23.                 ctx.drawImage(bitmap, 0, 0);

  24.                 const dataURL = canvas.toDataURL('image/png');

  25.                 const img = document.createElement('img');
  26.                 img.src = dataURL;
  27.                 img.style.maxWidth = '100%';

  28.                 const screenshotContainer = document.getElementById('screenshotContainer');
  29.                 screenshotContainer.innerHTML = '';
  30.                 screenshotContainer.appendChild(img);

  31.                 videoTrack.stop(); // 停止屏幕共享
  32.             } catch (error) {
  33.                 console.error('截图失败:', error);
  34.             }
  35.         }
  36.     </script>
  37. </body>
  38. </html>
复制代码


这段代码会在用户点击按钮时调用captureScreen()函数,该函数使用navigator.mediaDevices.getDisplayMedia()获取屏幕的媒体流,并通过ImageCaptureAPI抓取帧。然后,它将抓取的帧绘制到Canvas上,并将Canvas转换为DataURL以显示截图。
xuanxiao 发表于 2024-4-9 12:50:15 | 显示全部楼层
666空了来测试下
 楼主| 邓伟 发表于 2024-4-9 13:15:52 | 显示全部楼层
此 api 接口还可以继续扩展为 一键录屏功能
小白白 发表于 2024-6-13 23:00:26 | 显示全部楼层
这种技术贴,收藏了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表

在线客服

售前咨询
售后咨询
服务热线
023-58418553
微信公众号