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>
|