沉舟侧畔千帆进,病树前头万木春。这篇文章主要讲述web技术分享| css filter和getUserMedia的联合使用相关的知识,希望能为你提供帮助。
设置CSS3 filter(滤镜) 属性
- filter 属性定义了元素(通常是<
img>
)的可视效果(例如:模糊与饱和度)。
- blur(px)给图像设置高斯模糊。"
radius"
一值设定高斯函数的标准差,或者是屏幕上以多少像素融在一起, 所以值越大越模糊;
- 【web技术分享| css filter和getUserMedia的联合使用】grayscale(%) 将图像转换为灰度图像。值定义转换的比例。值为100%则完全转为灰度图像,值为0%图像无变化。值在0%到100%之间,则是效果的线性乘子。若未设置,值默认是0;
- invert(%) 反转输入图像。值定义转换的比例。100%的价值是完全反转。值为0%则图像无变化。值在0%和100%之间,则是效果的线性乘子。 若值未设置,值默认是0。
- sepia(%) 将图像转换为深褐色。值定义转换的比例。值为100%则完全是深褐色的,值为0%图像无变化。值在0%到100%之间,则是效果的线性乘子。若未设置,值默认是0;
- blur(px)给图像设置高斯模糊。"
radius"
一值设定高斯函数的标准差,或者是屏幕上以多少像素融在一起, 所以值越大越模糊;
.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 事件也适用于
& lt; select& gt;
元素。
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="https://www.songbingjia.com/android/index.css">
<
/head>
<
body>
<
video playsinline autoplay>
<
/video>
<
label for="filter">
Filter: <
/label>
<
select id="filter">
<
option value="https://www.songbingjia.com/android/none">
None<
/option>
<
option value="https://www.songbingjia.com/android/blur">
Blur<
/option>
<
option value="https://www.songbingjia.com/android/grayscale">
Grayscale<
/option>
<
option value="https://www.songbingjia.com/android/invert">
Invert<
/option>
<
option value="https://www.songbingjia.com/android/sepia">
Sepia<
/option>
<
/select>
<
script src="https://www.songbingjia.com/android/index.js">
<
/script>
<
/body>
<
/html>
效果展示
文章图片
文章图片
文章图片
文章图片
文章图片
推荐阅读
- KVM虚拟化系统学习笔记
- 切换阿里巴巴开源镜像站镜像——Kali镜像
- Linux之find命令的参数详解
- oeasy教您玩转vim - 80 - # 宏macro
- GDAL算法进度条使用说明
- 带你认识7种云化测试武器
- 汇编语言作业
- 图解四种 IO 模型
- 《Java语言程序设计》大作业报告九宫格游戏