HSc*_*ale 6 javascript getusermedia
我如何直接从视频捕获转到javascript中的数据网址?我想将图像作为调整大小的版本显示给用户,但保持全尺寸图像可用.那么,我该怎么做?
var PhotoBooth = {
onMediaStream: function(stream) {
PhotoBooth.canvas = $('canvas')[0];
PhotoBooth.context = PhotoBooth.canvas.getContext('2d');
PhotoBooth.localVideo = $('video')[0];
PhotoBooth.localVideo.src = window.URL.createObjectURL(stream);
},
noStream: function() {
console.log('FAIL TO GET WEBCAM ACCESS');
}
};
getUserMedia(
{video: true},
PhotoBooth.onMediaStream,
PhotoBooth.noStream
);
Run Code Online (Sandbox Code Playgroud)
这就是我目前正在保存上传图片的方式:
PhotoBooth.context.drawImage(PhotoBooth.localVideo, 0, 0, 200, 150);
$('#preview').show();
Run Code Online (Sandbox Code Playgroud)
然后我像这样检索保存的图像:
var dataUrl = PhotoBooth.canvas.toDataURL();
Run Code Online (Sandbox Code Playgroud)
我想保持画布默认大小相同,但保留实际数据.基本上,我希望画布显示重新调整大小的版本,但保持完整大小的版本.
在这里,canvas维护原始的640x480快照(使用适用于Chrome的https小提琴):
var start = () => navigator.mediaDevices.getUserMedia({ video: true })
.then(stream => video.srcObject = stream)
.catch(log);
var canvas = document.createElement("canvas");
canvas.width = 640;
canvas.height = 480;
var snap = () => {
canvas.getContext('2d').drawImage(video, 0, 0, 640, 480);
preview.getContext('2d').drawImage(canvas, 0, 0, 160, 120);
}
var log = msg => div.innerHTML += "<br>" + msg;Run Code Online (Sandbox Code Playgroud)
<button onclick="start()">Start!</button>
<button onclick="snap()">Snap!</button><div id="div"></div>
<video id="video" width="160" height="120" autoplay></video>
<canvas id="preview" width="160" height="120"></canvas>Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2950 次 |
| 最近记录: |