css filter和getUserMedia的联合使用


Posted in HTML / CSS onFebruary 24, 2022

一、设置CSS3 filter(滤镜) 属性

filter 属性定义了元素(通常是<img>)的可视效果(例如:模糊与饱和度)。

blur(px) 给图像设置高斯模糊。"radius"一值设定高斯函数的标准差,或者是屏幕上以多少像素融在一起, 所以值越大越模糊;

grayscale(%) 将图像转换为灰度图像。值定义转换的比例。值为100%则完全转为灰度图像,值为0%图像无变化。值在0%到100%之间,则是效果的线性乘子。若未设置,值默认是0;

invert(%) 反转输入图像。值定义转换的比例。100%的价值是完全反转。值为0%则图像无变化。值在0%和100%之间,则是效果的线性乘子。 若值未设置,值默认是0。

sepia(%) 将图像转换为深褐色。值定义转换的比例。值为100%则完全是深褐色的,值为0%图像无变化。值在0%到100%之间,则是效果的线性乘子。若未设置,值默认是0;

.none {

    -webkit-filter: none;

    filter: none;

}



.blur {

    -webkit-filter: blur(3px);

    filter: blur(3px);

}



.grayscale {

    -webkit-filter: grayscale(1);

    filter: grayscale(1);

}



.invert {

    -webkit-filter: invert(1);

    filter: invert(1);

}



.sepia {

    -webkit-filter: sepia(1);

    filter: sepia(1);

}



button#snapshot {

    margin: 0 10px 25px 0;

    width: 110px;

}



video {

    object-fit: cover;

}

二、取元素

Document方法querySelector(), 返回Element文档中与指定选择器或选择器组匹配的第一个。如果未找到匹配项,null则返回。

匹配是使用文档节点的深度优先预序遍历完成的,从文档标记中的第一个元素开始,并按子节点数量的顺序迭代顺序节点。

const filterSelect = document.querySelector('select#filter');

const video = window.video = document.querySelector('video');

三、绑定change事件

  • 当元素的值发生改变时,会发生 onchange 事件。
  • 该事件类似于 oninput 事件。不同之处在于 oninput 事件在元素值改变后立即发生,而 onchange 在元素失去焦点而内容发生改变后发生。另一个区别是 onchange 事件也适用于 <select> 元素。
filterSelect.onchange = function() {

  video.className = filterSelect.value;

};

四、获取音视频轨道

  • MediaDevices.getUserMedia() 会提示用户给予使用媒体输入的许可,媒体输入会产生一个MediaStream,里面包含了请求的媒体类型的轨道。此流可以包含一个视频轨道(来自硬件或者虚拟视频源,比如相机、视频采集设备和屏幕共享服务等等)、一个音频轨道(同样来自硬件或虚拟音频源,比如麦克风、A/D转换器等等),也可能是其它轨道类型。
  • 它返回一个 Promise对象,成功后会resolve回调一个 MediaStream 对象。若用户拒绝了使用权限,或者需要的媒体源不可用,promise会reject回调一个 PermissionDeniedError 或者 NotFoundError 。
navigator.mediaDevices.getUserMedia({

    audio: false,

    video: true

}).then(handleSuccess).catch(handleError);



function handleSuccess(stream) {

  video.srcObject = stream;

}



function handleError(error) {

  console.log('navigator.MediaDevices.getUserMedia error: ', error.message, error.name);

}

五、HTML

<!DOCTYPE html>

<html>

<head>

    <meta charset="utf-8">

    <link rel="stylesheet" href="./index.css">

</head>



<body>

<video playsinline autoplay></video>

<label for="filter">Filter: </label>

<select id="filter">

    <option value="none">None</option>

    <option value="blur">Blur</option>

    <option value="grayscale">Grayscale</option>

    <option value="invert">Invert</option>

    <option value="sepia">Sepia</option>

</select>



<script src="./index.js"></script>

</body>

</html>

效果展示:

 css filter和getUserMedia的联合使用

 css filter和getUserMedia的联合使用

 css filter和getUserMedia的联合使用

i css filter和getUserMedia的联合使用

到此这篇关于 css filter和getUserMedia的联合使用(web技术分享)的文章就介绍到这了,更多相关 css filter和getUserMedia的联合使用内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章,希望大家以后多多支持三水点靠木!

 
HTML / CSS 相关文章推荐
CSS3系列之3D制作方法案例
Aug 14 HTML / CSS
css3 box-shadow阴影(外阴影与外发光)图示讲解
Aug 11 HTML / CSS
纯CSS3实现鼠标悬停提示气泡效果
Feb 28 HTML / CSS
css3 条纹化和透明化表格Firefox下测试成功
Apr 15 HTML / CSS
html5+css3气泡组件的实现
Nov 21 HTML / CSS
CSS3实现点击放大的动画实例代码
Feb 27 HTML / CSS
使用CSS3实现SVG路径描边动画效果入门教程
Oct 21 HTML / CSS
CSS3中新增的对文本和字体的设置
Feb 03 HTML / CSS
CSS3实现的渐变幻灯片效果
Dec 07 HTML / CSS
HTML5 File API改善网页上传功能
Aug 19 HTML / CSS
Html5调用手机摄像头并实现人脸识别的实现
Dec 21 HTML / CSS
详解canvas绘制网络字体几种方法
Aug 27 HTML / CSS
css3中2D转换之有趣的transform形变效果
css3带你实现3D转换效果
bootstrapv4轮播图去除两侧阴影及线框的方法
企业开发CSS命名BEM代码规范实践
CSS3实现360度循环旋转功能
CSS实现九宫格布局(自适应)的示例代码
Feb 12 #HTML / CSS
postman中form-data、x-www-form-urlencoded、raw、binary的区别介绍
Jan 18 #HTML / CSS
You might like
PHP程序61条面向对象分析设计的经验小结
2008/11/12 PHP
php获取指定(访客)IP所有信息(地址、邮政编码、国家、经纬度等)的方法
2015/07/06 PHP
laravel 框架执行流程与原理简单分析
2020/02/01 PHP
PHP与Web页面的交互示例详解二
2020/08/04 PHP
js编码、解码函数介绍及其使用示例
2013/09/05 Javascript
浅谈重写window对象的方法
2014/12/29 Javascript
javascript实现dom动态创建省市纵向列表菜单的方法
2015/05/14 Javascript
jquery实现的缩略图预览滑块实例
2015/06/25 Javascript
JS实现线性表的顺序表示方法示例【经典数据结构】
2017/04/11 Javascript
详解vue-cli快速构建项目以及引入bootstrap、jq
2017/05/26 Javascript
在vue中通过axios异步使用echarts的方法
2018/01/13 Javascript
基于vue开发的在线付费课程应用过程
2018/01/25 Javascript
详解微信小程序的 request 封装示例
2018/08/21 Javascript
echarts多条折线图动态分层的实现方法
2019/05/24 Javascript
js+css实现扇形导航效果
2020/08/18 Javascript
[01:15:29]DOTA2上海特级锦标赛主赛事日 - 3 胜者组第二轮#2Secret VS EG第三局
2016/03/04 DOTA
python使用线程封装的一个简单定时器类实例
2015/05/16 Python
Python读写Json涉及到中文的处理方法
2016/09/12 Python
JupyterNotebook设置Python环境的方法步骤
2019/12/03 Python
python 实现检验33品种数据是否是正态分布
2019/12/09 Python
python实现交并比IOU教程
2020/04/16 Python
HTML文本属性&amp;颜色控制属性的实现
2019/12/17 HTML / CSS
土耳其时尚潮流在线购物网站:Trendyol
2017/10/10 全球购物
Omio波兰:全欧洲低价大巴、火车和航班搜索和比价
2018/02/16 全球购物
瑞典快乐袜子:Happy Socks
2018/02/16 全球购物
澳大利亚在线家具店:Luxo Living
2019/03/24 全球购物
阿联酋优惠券服务:Living Kool
2019/12/12 全球购物
飞利浦美国官网:Philips美国
2020/02/28 全球购物
如何找出EMP表里面SALARY第N高的employee
2013/12/05 面试题
毕业生在校学习的自我评价分享
2013/10/08 职场文书
转党组织关系介绍信
2014/01/08 职场文书
主题实践活动总结
2014/05/08 职场文书
护林防火标语
2014/06/27 职场文书
2014年大堂经理工作总结
2014/11/21 职场文书
如何用Python搭建gRPC服务
2021/06/30 Python
python编程项目中线上问题排查与解决
2021/11/01 Python