【发布时间】:2020-02-07 13:32:55
【问题描述】:
我正在构建一个应用程序,我需要能够从网络摄像头捕获帧并将其上传到应用程序。为此,我使用 WebRTC 从视频流中捕获图像,将其写入画布,然后抓取数据并上传。这在大多数情况下都可以正常工作。但是,我需要给用户一种调节亮度的方法。为此,我在页面上添加了一个带有视频流的滑块,调整时应用“style.webkitFilter = 'brightness(X%)'”。同样,这工作正常,但没有调整捕获图像的亮度,只是显示的视频流。我用来实际捕获图像的 javascript 函数是:
function takepicture() {
var context = canvas.getContext('2d');
var b = document.getElementById('txtBrightness').value;
if (width && height) {
canvas.width = width;
canvas.height = height;
context.filter = 'brightness(' + b + '%)';
context.drawImage(video, 0, 0, width, height);
var data = canvas.toDataURL();
//photo.setAttribute('src', data);
//alert(data);
document.getElementById('Image').value = data;
//$("#Image").val(data);
$("#form1").submit();
} else {
clearphoto();
}
}
这适用于 Chrome、Firefox 和基于 Chromium 的 Edge 版本,但是它不适用于 EdgeHTML 版本的 Edge。在这些版本的 Edge 中,视频流以调整后的亮度正确显示,但捕获的图像没有调整亮度。是否有使上下文过滤器与 EdgeHTML 版本的 Edge 浏览器一起使用的解决方法?
【问题讨论】:
标签: javascript html5-canvas webrtc microsoft-edge