这是一项稍微复杂的任务。您需要将流中的数据放入video
元素,然后将其从那里放入canvas
元素,它允许您创建一个数据 URL,然后可以在服务器端将其转换为图像。 (深呼吸)
您的代码可能看起来有点像这样:
var stream, video, canvas, data;
navigator.getUserMedia({video: true}, function(s) {
stream = s;
});
video = document.createElement('video');
video.src = window.URL.createObjectURL(stream);
video.play();
canvas = document.createElement('canvas');
canvas.getContext('2d').drawImage(video, 0, 0, 240, 150);
data = canvas.toDataURL();
data
现在将是一个数据 URL,看起来有点像这样:"data:image/png;base64,iVBORw0KGgoA...
(最后还有更多字符!)。然后您可以使用 AJAX 将其发送到您的服务器。
许多语言都有一种从数据 URL 获取信息的方法。我从来没有使用过它,但是 PHP 看起来特别好。你应该能够这样做:
$image = imagecreatefrompng(substr($data, 22));
where $data
是从浏览器发送的数据。请注意,我还没有测试过这个 PHP 代码。
为了改善用户体验,您可以显示视频元素:然后用户将能够看到拍摄的镜头。此外,您可以执行以下操作drawImage
调用作为对事件的响应,例如用户单击按钮。另请注意,getUserMedia
该功能尚不支持跨浏览器,因此您可能需要进行一些编辑才能使其在所有浏览器中运行。