视频监控(抓拍)

示例

按钮:

 <div @click="takeClick(index, $event)" >
       <img src="@/assets/images/zhua.png" style="height: 20px;" alt="">
     </div>
// 点击截图按钮
const takeClick = (index) => {
  const urlObj = url.value.find(item => item.index == index)
  let video = videoRef.value[index]; // 获取video节点
  let canvas = document.createElement("canvas"); // 创建canvas节点
  let w = video?.clientWidth;
  let h = video?.clientHeight;
  canvas.width = w;
  canvas.height = h; // 设置宽高
  const ctx = canvas.getContext("2d");
  ctx?.drawImage(video, 0, 0, w, h); // video写入到canvas  clientHeight
  imgUrl.value = canvas.toDataURL("image/png"); // 生成截图地
  console.log(imgUrl.value, 'imgUrl')
  let newTab = window.open();
  newTab.document.open();
  newTab.document.write("<html><head><style>img { width: 100%; height: 100%; }</style></head><body><img src='" + imgUrl.value + "'></body></html>");
  newTab.document.close();
  downloadFileByBase64(imgUrl.value, urlObj.shename);
}

 urlObj是当前这一项,然后获取当前这一项的下标以及dom节点

创建canvas节点,设置宽高,调用canvas 的getContext方法,以及drawImage方法,传入

生成本地图片

// 两个参数,第一个是base64地址  第二个是下载后的图片名字
const downloadFileByBase64 = (base64, name) => {
  let myBlob = dataURLtoBlob(base64);
  let myUrl = URL.createObjectURL(myBlob);
  downloadFile(myUrl, name);
}

 调用下载方法

const downloadFile = (url, name = "What's the fuvk") => {
  let a = document.createElement("a");
  a.setAttribute("href", url);
  a.setAttribute("download", name);
  a.setAttribute("target", "_blank");
  let clickEvent = document.createEvent("MouseEvents");
  clickEvent.initEvent("click", true, true);
  a.dispatchEvent(clickEvent);
}

新打开链接,展示图片以及下载

  • 8
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值