一、设置CSS3 filter(滤镜) 属性 filter 属性定义了元素(通常是img)的可视效果(例如:模糊与饱和度)。 blur(px)给图像设置高斯模糊。radius一值设定高斯函数的标准差,或者是屏幕上以多少像
一、设置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事件
filterSelect.onchange = function() {
video.className = filterSelect.value;
};
四、获取音视频轨道
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>
效果展示:
i |
2021-04-14
2021-04-29
2018-01-07
2022-06-10
2021-09-30