当前位置: 首页 > news >正文

电子 公司 网站建设网页设计制作

电子 公司 网站建设,网页设计制作,杭州建设工程交易网,常州建设安全员报名网站如果要实现一个类似人脸识别的界面,要求使用 canvas 进行绘制,中间镂空透明区域,背景是白色的画布。 技术方案: 首先,使用 canvas 绘制一个白色画布其次,使用 context.globalCompositeOperation 合成属性进…

如果要实现一个类似人脸识别的界面,要求使用 canvas 进行绘制,中间镂空透明区域,背景是白色的画布。

技术方案:

  1. 首先,使用 canvas 绘制一个白色画布
  2. 其次,使用 context.globalCompositeOperation 合成属性进行多图层处理

UI 绘制

<section><video id="video-preview" width="0%" height="0%" autoPlay /><div><canvas id="video-canvas" width="300" height="300" /></div><button id="start-recording">start</button><button id="stop-recording" disabled>stop</button>
</section>

逻辑实现(纯js实现)

// 获取 DOM 元素
const video: any = document.getElementById('video-preview');const canvas: any = document.getElementById('video-canvas');
const ctx = canvas.getContext('2d');// 设定遮罩区域的尺寸
const centerX = canvas.width / 2;
const centerY = canvas.height / 2;
const outerRadius = Math.min(centerX, centerY) * 0.9;// 绘制视频帧
function drawFrame() {// 绘制 Video 流ctx.drawImage(video, 0, 0, canvas.width, canvas.height);ctx.beginPath();ctx.arc(centerX, centerY, outerRadius, 0, 2 * Math.PI);ctx.globalCompositeOperation = 'destination-in'; // 使用复合操作使颜色变为透明ctx.fill();// 恢复默认的混合模式ctx.globalCompositeOperation = 'source-over';// 循环绘制requestAnimationFrame(drawFrame);
}const startRecordingButton: any = document.getElementById('start-recording');
const stopRecordingButton: any = document.getElementById('stop-recording');// 录制状态标志
let isRecording: any = false;
let recordedBlobs: any = [];
let mediaRecorder: any = null;
let stream: any = null;// 请求访问媒体设备
navigator.mediaDevices.getUserMedia({ video: true, audio: true }).then((_stream) => {stream = _stream;video.srcObject = stream; // 设置视频源}).catch((err) => console.error('Error:', err));// 等待视频流就绪
video.addEventListener('canplay', () => {drawFrame();
});
// 开始录制按钮点击事件处理函数
startRecordingButton.addEventListener('click', () => {if (!isRecording) {isRecording = true;startRecordingButton.disabled = true;stopRecordingButton.disabled = false;recordedBlobs = [];mediaRecorder = new MediaRecorder(stream);mediaRecorder.ondataavailable = (event) => {if (event.data && event.data.size > 0) {recordedBlobs.push(event.data);}};mediaRecorder.onstop = () => {// 录制结束后,合并 Blobconst blob = new Blob(recordedBlobs, { type: 'video/mp4' });const url = URL.createObjectURL(blob);const a = document.createElement('a');document.body.appendChild(a);a.style.display = 'none';a.href = url;a.download = 'recorded-video.mp4';a.click();window.URL.revokeObjectURL(url);};mediaRecorder.start();}
});// 停止录制按钮点击事件处理函数
stopRecordingButton.addEventListener('click', () => {if (isRecording) {mediaRecorder.stop();isRecording = false;startRecordingButton.disabled = false;stopRecordingButton.disabled = true;}
});

在线查看

点击查看

http://www.wangmingla.cn/news/164807.html

相关文章:

  • 校园网站建设 德育做个网站
  • 猪八戒做网站 纠纷推广之家
  • 做博客的网站有哪些什么是优化师
  • 宁波做网站建设网站建设方案开发
  • 网站关键词优化快速排名广东东莞今日最新消息
  • 现在做网站到底需要多少钱最新消息新闻头条
  • php网站怎么做伪静态一个新品牌怎样营销推广
  • 织梦可以做婚纱影楼网站吗seo关键词快速排名
  • 安江县政府网站建设方案友情链接查询工具
  • 浙江公安网站备案系统网络推广是干嘛的
  • 如何选择大良网站建设百度网盘电脑网页版
  • 企业网站怎么做产品图片轮播流氓网站
  • 那个网站的是做vb题目的官方正版清理优化工具
  • 南通建网站的公司营销 推广
  • 做公司网站的理念chrome浏览器下载安卓手机
  • 个人做网站最方便的方法磁力猫最佳搜索引擎入口
  • 制作app网站网站推广的基本方法是
  • 快速网站开发工具优化seo哪家好
  • 网站推广律师关键词有哪些河南省最新通知
  • 夺宝网站开发人民日报最新头条10条
  • 网站对公司的作用是什么意思个人如何做网络推广
  • wordpress上传直连播放seo排名工具有哪些
  • 腾讯做电脑吃鸡网站中国广告网
  • 做公司网站是永久性的吗广告关键词查询
  • 淘宝图片做链接的网站厦门人才网唯一官网登录
  • 专做项目报告的网站网络软文投放
  • 网站类型佛山百度快速排名优化
  • 常州溧阳网站建设网络广告四个特征
  • 推进政府网站集约化建设工作互联网营销怎么赚钱
  • wap网站浏览器衡阳seo外包