diff --git a/src/renderer/src/components/CameraCapture.vue b/src/renderer/src/components/CameraCapture.vue index 051960d..c173567 100644 --- a/src/renderer/src/components/CameraCapture.vue +++ b/src/renderer/src/components/CameraCapture.vue @@ -72,10 +72,23 @@ function capture(): void { canvas.height = video.videoHeight const ctx = canvas.getContext('2d') if (!ctx) return + // 这台设备的摄像头画面是倒置的(见下方 .cam-preview-video 的 CSS 旋转), + // 拍出来的照片也要同步转正,不然预览是正的、存下来的图是倒的 + ctx.save() + ctx.translate(canvas.width, canvas.height) + ctx.rotate(Math.PI) ctx.drawImage(video, 0, 0, canvas.width, canvas.height) + ctx.restore() capturedDataUrl.value = canvas.toDataURL('image/jpeg', 0.85) } +function switchCamera(): void { + if (devices.value.length < 2) return + const idx = devices.value.findIndex((d) => d.deviceId === selectedDeviceId.value) + const nextIdx = (idx + 1) % devices.value.length + switchDevice(devices.value[nextIdx].deviceId) +} + function retake(): void { capturedDataUrl.value = '' } @@ -114,22 +127,23 @@ onUnmounted(() => stopStream())
{{ errorMessage }}
-
拍摄预览 - -
- - -