hrms-checkin/src/views/SampleCamera.vue

60 lines
1.4 KiB
Vue
Raw Normal View History

2023-11-14 17:47:43 +07:00
<script setup lang="ts">
import Camera from 'simple-vue-camera'
import { ref } from 'vue'
2023-11-15 16:03:02 +07:00
const camera = ref<InstanceType<typeof Camera>>()
2023-11-14 17:47:43 +07:00
const cameraIsOn = ref<boolean>(false)
2023-11-15 16:03:02 +07:00
const deviceCamera = ref<any>()
2023-11-14 17:47:43 +07:00
2023-11-15 16:03:02 +07:00
const cameraOff = async () => {
// change camera device
if (cameraIsOn.value) {
camera.value?.stop()
} else {
await camera.value?.start()
changeCamera()
}
2023-11-14 17:47:43 +07:00
cameraIsOn.value = !cameraIsOn.value
}
2023-11-15 16:03:02 +07:00
// change camera device
const changeCamera = async () => {
const devices: any = await camera.value?.devices(['videoinput'])
const device = await devices[0]
camera.value?.changeCamera(device.deviceId)
deviceCamera.value = devices
}
2023-11-14 17:47:43 +07:00
// Use camera reference to call functions
const takePicture = async () => {
const imageBlob = await camera.value?.snapshot(
2023-11-15 16:03:02 +07:00
{ width: 640, height: 640 },
2023-11-14 17:47:43 +07:00
'image/png',
0.5
)
console.log('imageBlob', imageBlob)
camera.value?.stop()
}
</script>
<template>
2023-11-15 16:03:02 +07:00
<div class="row col-md-12 col-sm-12">
<div class="col-md-3">
2023-11-14 17:47:43 +07:00
<Camera
:resolution="{ width: 500, height: 500 }"
ref="camera"
:autoplay="false"
>
<q-btn color="primary" @click="cameraOff"
>I'm on top of the video</q-btn
>
<q-btn color="primary" @click="takePicture">Take Picture</q-btn>
2023-11-15 16:03:02 +07:00
<q-btn color="primary" @click="changeCamera">changeCamera</q-btn>
2023-11-14 17:47:43 +07:00
</Camera>
2023-11-15 16:03:02 +07:00
{{ deviceCamera }}
2023-11-14 17:47:43 +07:00
</div>
</div>
</template>