from openflexure_microscope.api.utilities import gen, JsonResponse from openflexure_microscope.common.labthings_core.utilities import ( get_by_path, set_by_path, create_from_path, ) from openflexure_microscope.common.flask_labthings.find import find_device from openflexure_microscope.common.flask_labthings.resource import Resource from flask import jsonify, request, abort, Response import logging class MjpegStream(Resource): """ Real-time MJPEG stream from the microscope camera """ def get(self): """ MJPEG stream from the microscope camera """ microscope = find_device("openflexure_microscope") # Restart stream worker thread microscope.camera.start_worker() return Response( gen(microscope.camera), mimetype="multipart/x-mixed-replace; boundary=frame" ) class SnapshotStream(Resource): """ Single JPEG snapshot from the camera stream """ def get(self): """ Single snapshot from the camera stream .. :quickref: Streams; Camera snapshot :>header Accept: image/jpeg :>header Content-Type: image/jpeg :status 200: stream active """ microscope = find_device("openflexure_microscope") # Restart stream worker thread microscope.camera.start_worker() return Response(microscope.camera.get_frame(), mimetype="image/jpeg")