Skip to content

Commit

Permalink
fix preview
Browse files Browse the repository at this point in the history
  • Loading branch information
NevermindNilas committed Sep 15, 2024
1 parent 1d436d5 commit b974243
Showing 1 changed file with 15 additions and 39 deletions.
54 changes: 15 additions & 39 deletions src/previewSettings.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,13 @@
import numpy as np
import os
import logging
import signal
import threading

from queue import Queue
from flask import Flask, Response, jsonify
from PIL import Image
from concurrent.futures import ThreadPoolExecutor
from werkzeug.serving import make_server
from .coloredPrints import green


Expand All @@ -21,7 +22,6 @@ def __init__(
self.writeBuffer = writeBuffer
self.readQueue = Queue()
self.app.add_url_rule("/frame", "getFrame", self.getFrame)
self.app.add_url_rule("/lowFrame", "getFrameLowRes", self.getFrame)
self.app.add_url_rule(
"/stopServer", "stopServer", self.stopServer, methods=["GET"]
)
Expand All @@ -30,6 +30,8 @@ def __init__(
self.frame: np.ndarray = None
self.lastFrame: np.ndarray = None
self.exit = False
self.server = None
self.server_thread = None

def getFrame(self):
try:
Expand All @@ -53,37 +55,8 @@ def getFrame(self):
logging.error(f"Error in getFrame: {e}")
return Response("Error while converting frame", status=500)

def getFrameLowRes(self):
try:
self.frame = self.writeBuffer.peek()
if self.frame is not None:
self.lastFrame = self.frame

frameToUse = self.frame if self.frame is not None else self.lastFrame

if frameToUse is None:
return Response("No frame available", status=500)

imgMode = "L" if frameToUse.shape[2] == 1 else "RGB"
img = Image.fromarray(frameToUse, imgMode)

newWidth = img.width // 4
newHeight = img.height // 4

img = img.resize((newWidth, newHeight))

buf = io.BytesIO()
img.save(buf, format="JPEG")
buf.seek(0)
return Response(buf, mimetype="image/jpeg")
except Exception as e:
print(f"Error in getFrameLowRes: {e}")
logging.error(f"Error in getFrameLowRes: {e}")
return Response("Error while converting frame", status=500)

def stopServer(self):
self.exit = True
os.kill(os.getpid(), signal.SIGINT)
return jsonify({"success": True, "message": "Server is shutting down..."})

def start(self):
Expand All @@ -93,13 +66,16 @@ def start(self):
log = logging.getLogger("werkzeug")
log.setLevel(logging.ERROR)
log.disabled = True
self.app.run(host=self.localHost, port=self.port)

self.server = make_server(self.localHost, self.port, self.app)
self.serverThread = threading.Thread(target=self.server.serve_forever)
self.serverThread.start()

def close(self):
try:
self.exit = True
self.executor.shutdown()
self.stopServer()
except Exception as e:
print(f"Error in close: {e}")
logging.error(f"Error in close: {e}")
self.exit = True
if self.server:
self.server.shutdown()
if self.serverThread:
self.serverThread.join()
self.executor.shutdown()
print(green("Preview server has been shut down."))

0 comments on commit b974243

Please sign in to comment.