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动画事件—webkitAnimationEnd与计时器time事件
Jan 31 HTML / CSS
一款简洁的纯css3代码实现的动画导航
Oct 31 HTML / CSS
基于DOM+CSS3实现OrgChart组织结构图插件
Mar 02 HTML / CSS
谈谈对css属性box-sizing的了解
Jan 04 HTML / CSS
css3 column实现卡片瀑布流布局的示例代码
Jun 22 HTML / CSS
HTML5 Canvas实现玫瑰曲线和心形图案的代码实例
Apr 10 HTML / CSS
HTML5的表单(绝对特别强大的功能)使用示例
Jun 20 HTML / CSS
详解如何用HTML5 Canvas API控制图片的缩放变换
Mar 22 HTML / CSS
canvas学习和滤镜实现代码
Aug 22 HTML / CSS
html5使用canvas压缩图片的示例代码
Sep 11 HTML / CSS
canvas 橡皮筋式线条绘图应用方法
Feb 13 HTML / CSS
CSS 实现多彩、智能的阴影效果
May 12 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
zend Framework中的Layout(模块化得布局)详解
2013/06/28 PHP
PHP获取浏览器信息类和客户端地理位置的2个方法
2014/04/24 PHP
PHP通过串口实现发送短信
2015/07/08 PHP
thinkphp项目部署到Linux服务器上报错“模板不存在”如何解决
2016/04/27 PHP
php ajax数据传输和响应方法
2018/08/21 PHP
Javascript-Mozilla和IE中的一个函数直接量的问题
2007/01/09 Javascript
JSQL  一个 web DB 的封装
2010/05/05 Javascript
简单实用的反馈表单无刷新提交带验证
2013/11/15 Javascript
安装使用Mongoose配合Node.js操作MongoDB的基础教程
2016/03/01 Javascript
无阻塞加载js,防止因js加载不了影响页面显示的问题
2016/12/18 Javascript
微信小程序 封装http请求实例详解
2017/01/16 Javascript
Angular JS 生成动态二维码的方法
2017/02/23 Javascript
Javascript面试经典套路reduce函数查重
2017/03/23 Javascript
jQuery Tree Multiselect使用详解
2017/05/02 jQuery
vue中动态添加class类名的方法
2018/09/05 Javascript
webpack4与babel配合使es6代码可运行于低版本浏览器的方法
2018/10/12 Javascript
微信小程序全选多选效果实现代码解析
2020/01/21 Javascript
Element Tooltip 文字提示的使用示例
2020/07/26 Javascript
[02:09]抵达西雅图!中国军团加油!
2014/07/07 DOTA
[47:06]DOTA2上海特级锦标赛主赛事日 - 4 败者组第五轮 MVP.Phx VS EG第一局
2016/03/05 DOTA
[01:51]DAC趣味视频-如何成为职业选手.mp4
2017/04/02 DOTA
Python中用Ctrl+C终止多线程程序的问题解决
2013/03/30 Python
python使用正则表达式替换匹配成功的组并输出替换的次数
2017/11/22 Python
Pandas DataFrame数据的更改、插入新增的列和行的方法
2019/06/25 Python
Python代码太长换行的实现
2019/07/05 Python
使用 Python 快速实现 HTTP 和 FTP 服务器的方法
2019/07/22 Python
Python操作qml对象过程详解
2019/09/26 Python
Python list和str互转的实现示例
2020/11/16 Python
UNDONE手表官网:世界领先的定制手表品牌
2018/11/13 全球购物
代码中finally中的代码会不会执行
2012/02/06 面试题
幼儿教师自我鉴定
2013/11/02 职场文书
运动会开幕式邀请函
2014/01/22 职场文书
冬季安全检查方案
2014/05/23 职场文书
钳工实训报告总结
2014/11/04 职场文书
2015元旦感言
2015/12/09 职场文书
pytorch中F.avg_pool1d()和F.avg_pool2d()的使用操作
2021/05/22 Python