Closes: #166 Signed-off-by: Justin Georgi <justin.georgi@gmail.com> Reviewed-on: #171
43 lines
1.4 KiB
JavaScript
43 lines
1.4 KiB
JavaScript
export default {
|
|
methods: {
|
|
async openCamera(imContain) {
|
|
var cameraLoaded = false
|
|
const devicesList = await navigator.mediaDevices.enumerateDevices()
|
|
this.videoDeviceAvailable = devicesList.some( d => d.kind == "videoinput")
|
|
if (this.videoDeviceAvailable) {
|
|
var vidConstraint = {
|
|
video: {
|
|
width: {
|
|
ideal: imContain.offsetWidth
|
|
},
|
|
height: {
|
|
ideal: imContain.offsetHeight
|
|
},
|
|
facingMode: 'environment'
|
|
},
|
|
audio: false
|
|
}
|
|
const stream = await navigator.mediaDevices.getUserMedia(vidConstraint);
|
|
cameraLoaded = true
|
|
this.cameraStream = stream
|
|
}
|
|
return cameraLoaded
|
|
},
|
|
closeCamera () {
|
|
this.cameraStream.getTracks().forEach( t => t.stop())
|
|
this.cameraStream = null
|
|
this.videoAvailable = false
|
|
},
|
|
captureVidFrame() {
|
|
const vidViewer = this.$refs.vid_viewer
|
|
vidViewer.pause()
|
|
let tempCVS = document.createElement('canvas')
|
|
tempCVS.id = 'temp-video-canvas'
|
|
tempCVS.height = vidViewer.videoHeight || parseInt(vidViewer.style.height)
|
|
tempCVS.width = vidViewer.videoWidth || parseInt(vidViewer.style.width)
|
|
const tempCtx = tempCVS.getContext('2d')
|
|
tempCtx.drawImage(vidViewer, 0, 0)
|
|
this.getImage(tempCVS.toDataURL())
|
|
}
|
|
}
|
|
} |