diff --git a/camera/camera.py b/camera/camera.py index 0255a7d..9a3cdac 100755 --- a/camera/camera.py +++ b/camera/camera.py @@ -1,11 +1,13 @@ import base64 import os -#from cv2 import * + + +# from cv2 import * class Camera: def __init__(self, config_obj: dict): - #self.camera = VideoCapture(0) + # self.camera = VideoCapture(0) self.config = config_obj def get_image(self): @@ -17,9 +19,9 @@ def get_image(self): os.remove('/tmp/buffer.jpg') return base64.b64encode(img) else: - raise Error() + raise ConnectionError('Failed taking image with cv2') def get_test_image(self): - with open(os.getcwd()+'/camera/test.jpeg','rb') as test_img: + with open(os.getcwd() + '/camera/test.jpeg', 'rb') as test_img: test = test_img.read() return base64.b64encode(test) diff --git a/screenshot/__init__.py b/screenshot/__init__.py new file mode 100755 index 0000000..e69de29 diff --git a/screenshot/screenshot.py b/screenshot/screenshot.py new file mode 100644 index 0000000..826d0e5 --- /dev/null +++ b/screenshot/screenshot.py @@ -0,0 +1,12 @@ +import gtk.gdk + +w = gtk.gdk.get_default_root_window() +sz = w.get_size() +print "The size of the window is %d x %d" % sz +pb = gtk.gdk.Pixbuf(gtk.gdk.COLORSPACE_RGB,False,8,sz[0],sz[1]) +pb = pb.get_from_drawable(w,w.get_colormap(),0,0,0,0,sz[0],sz[1]) +if (pb != None): + pb.save("screenshot.png","png") + print "Screenshot saved to screenshot.png." +else: + print "Unable to get the screenshot." \ No newline at end of file diff --git a/server.py b/server.py index 809338e..4815b28 100644 --- a/server.py +++ b/server.py @@ -5,9 +5,13 @@ from compression.compressor import Compressor from transport.server.UdpSocket import UdpSocket -#from encryption.encryptor import Encryptor +# from encryption.encryptor import Encryptor from config.config import Config - +from queue import Queue +from threading import Thread +from transport import AbstractTransport +import sys +from http.server import * sys.path.insert(0, os.getcwd()) @@ -18,22 +22,22 @@ def main(): subprocess.call('clear', shell=True) config_object = Config(os.getcwd() + '/config/config.ini').raw_config_object transport = UdpSocket(config_object) + image_queue = Queue() if config_object['COMPRESSION']['switch'] == 'On': compressor = Compressor(config_object) transport.add_compression(compressor) if config_object['ENCRYPTION']['switch'] == 'On': - #encryptor = Encryptor(config_object) - #transport.add_encryption(encryptor) + # encryptor = Encryptor(config_object) + # transport.add_encryption(encryptor) print("test") try: - while True: - ''' - do stuff - ''' - transport.handle_client() - print('\nPrint ... Server running \n') + receiver_thread = Thread(target=spin_server, args=(image_queue, transport)) + receiver_thread.start() + + ui_thread = Thread(target=spin_ui_server, args=(image_queue,)) + ui_thread.start() except LookupError as e: print(e) @@ -44,5 +48,43 @@ def main(): sys.exit(1) +def spin_server(queue: Queue, transport: AbstractTransport): + while True: + ''' + do stuff + ''' + b64image = transport.handle_client() + queue.put(b64image, False) + + +class MyServer(BaseHTTPRequestHandler): + def do_GET(self): + self.send_response(200) + self.send_header("Content-type", "text/html") + self.end_headers() + b64image = None + + while True and b64image is None: + b64image = self.queue.get() + + self.wfile.write('
') + self.wfile.write('') #refrsesh the page every 2'd to check for new pictures... + self.wfile.write(''.encode()) + self.wfile.write('