Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 6 additions & 4 deletions 10 camera/camera.py
Original file line number Diff line number Diff line change
@@ -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):
Expand All @@ -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)
Empty file added 0 screenshot/__init__.py
Empty file.
12 changes: 12 additions & 0 deletions 12 screenshot/screenshot.py
Original file line number Diff line number Diff line change
@@ -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."
62 changes: 52 additions & 10 deletions 62 server.py
Original file line number Diff line number Diff line change
Expand Up @@ -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())

Expand All @@ -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)
Expand All @@ -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('<html><head>')
self.wfile.write('<meta http-equiv="refresh" content="1">') #refrsesh the page every 2'd to check for new pictures...
self.wfile.write('</head><body>'.encode())
self.wfile.write('<img src="data:image/jpeg;base64,'.encode())
self.wfile.write(b64image)
self.wfile.write('"> </img>'.encode())
self.wfile.write('</body></html>'.encode())

def set_queue(self, queue):
self.queue = queue


def spin_ui_server(image_queue):
my_server = HTTPServer(("127.0.0.1", 9999), MyServer)
my_server.RequestHandlerClass.set_queue(MyServer, image_queue)
my_server.handle_request()
my_server.serve_forever()


if __name__ == "__main__":
main()
8 changes: 5 additions & 3 deletions 8 transport/server/UdpSocket.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

from transport.AbstractTransport import AbstractTransport
import base64
from asyncio import coroutine

class UdpSocket(AbstractTransport):
def __init__(self, config: dict):
Expand Down Expand Up @@ -41,9 +42,10 @@ def return_received(self, addr):
decompressed = self.uncompress_data(self.result_file)
# data = self.decrypt_data(decompressed)
print('len ' + str(len(decompressed)))
base64_decoded = (base64.b64decode(decompressed))
with open('testimg.jpg','wb') as holder:
holder.write(base64_decoded)
#base64_decoded = (base64.b64decode(decompressed))
#with open('testimg.jpg','wb') as holder:
# holder.write(base64_decoded)
# print('\n' + data + '\n')
# print('Received %s ' % str((data, addr)))
self.get_socket().sendto('got it'.encode(), addr)
return decompressed
Morty Proxy This is a proxified and sanitized view of the page, visit original site.