首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用getDisplayMedia在元素下面的所有DIVs的Chrome中执行屏幕截图

使用getDisplayMedia在元素下面的所有DIVs的Chrome中执行屏幕截图
EN

Stack Overflow用户
提问于 2022-11-01 12:13:40
回答 1查看 30关注 0票数 1

是否有一种方法可以使用: getDisplayMedia获取HTML元素及其所有子元素的屏幕截图,并将其保存/下载为单个png映像?

我不想流内容,我只是有一个非常复杂的SVG /画布/ HTML设置,需要拍摄整个根DIV的截图。在Chrome中尝试了许多图像快照技术,但是它们中没有一个能捕获所有的东西,所以我想也许MediaRecorder > png会有用吗?

谢谢你

EN

Stack Overflow用户

发布于 2022-11-28 07:48:56

如果您的元素完全符合视窗,我会推荐最近的区域捕获API登陆Chrome。

有关更多详细信息,请参阅https://developer.chrome.com/docs/web-platform/region-capture/

代码语言:javascript
运行
复制
const mainContentArea = document.querySelector("#mainContentArea");
const cropTarget = await CropTarget.fromElement(mainContentArea);

// Prompt user to share the tab's content.
const stream = await navigator.mediaDevices.getDisplayMedia({ preferCurrentTab: true });
const [track] = stream.getVideoTracks();

// Start cropping the self-capture video track using the CropTarget <-- Magic!
await track.cropTo(cropTarget);

const canvas = drawToCanvas(stream);
canvas.toBlob((blob) => {
  // See https://web.dev/patterns/files/save-a-file/ to save this blob locally.
});

/* Utils */

function drawToCanvas(stream) {
  const canvas = document.createElement("canvas");
  const video = document.createElement("video");
  video.srcObject = stream;

  // Play it.
  await video.play();

  // Draw one video frame to canvas.
  canvas.width = video.videoWidth;
  canvas.height = video.videoHeight;
  canvas.getContext("2d").drawImage(video, 0, 0);

  return canvas;
}

将来,您可能可以使用元素捕获Web。见当前建议:https://github.com/WICG/proposals/issues/73

票数 2
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74275776

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档