diff --git a/backend/main.py b/backend/main.py index 92de707..741584f 100644 --- a/backend/main.py +++ b/backend/main.py @@ -5,6 +5,8 @@ import logging from pathlib import Path from contextlib import asynccontextmanager +import cv2 + from fastapi import FastAPI, WebSocket, WebSocketDisconnect, UploadFile, File from fastapi.responses import FileResponse, JSONResponse from fastapi.staticfiles import StaticFiles @@ -506,7 +508,15 @@ async def traiter_message_ws(msg: dict, ws: WebSocket): if type_msg == "ping": await ws.send_json({"type": "pong"}) elif type_msg == "preview": - donnees = camera.preview() + # Pendant une capture DSLR, utiliser directement la webcam fallback + donnees = None + if capture_en_cours and camera._preview_webcam_fallback: + ret, frame = camera._preview_webcam_fallback.read() + if ret: + _, buf = cv2.imencode(".jpg", frame, [cv2.IMWRITE_JPEG_QUALITY, 70]) + donnees = buf.tobytes() + else: + donnees = camera.preview() if donnees: b64 = base64.b64encode(donnees).decode("ascii") await ws.send_json({"type": "preview", "image": f"data:image/jpeg;base64,{b64}"})